如果我愚蠢到找不到如此明显的答案,我会开始道歉。
我看过很多页面都在谈论为指针参数进行特定的模板特化。
不过,我希望能够阻止模板专门化指针参数,但我不知道该怎么做。
template< class T >
void function( T arg )
{
//...
}
int main( )
{
int i = 42;
function( i ); // Ok
function( &i ); // Die bastart with a compiler error!
}
这可能吗?
谢谢。
最佳答案
你可以声明特化(在这种情况下它在技术上只是一个重载)但不定义它:)
template<typename T >
void function( T arg )
{
//...
}
template<typename T >
void function( T* arg ); //no definition
int main()
{
int i = 42;
function( i ); // Ok
function( &i ); //ERROR
}
关于C++:如何防止模板专门化指针?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9312391/