【发布时间】:2011-05-25 14:16:36
【问题描述】:
void foo (void *p); // library function; can't edit
template<typename T>
void Remove (T *p)
{
// main code
foo(p); // Can we remove const ness of T here ?
}
我有多个函数如Remove(),也可以用const T*调用,与foo(void*)不匹配。如果不重载/专门化Remove(),我可以删除T* 的constness 吗? ... 用法:
const int *p;
Remove(p); // error related to `foo()`
【问题讨论】:
-
@Kristopher,谢谢。我从那里得到了答案。还有如何实现
boost中的std::remove_cast的想法。 -
@All,感谢您的回复。最后我最终使用了最简单的解决方案,
foo((void*)p);一开始我并没有想到。