C++:如何防止模板专门化指针?

标签 c++ templates pointers

如果我愚蠢到找不到如此明显的答案,我会开始道歉。

我看过很多页面都在谈论为指针参数进行特定的模板特化。

不过,我希望能够阻止模板专门化指针参数,但我不知道该怎么做。

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/

相关文章:

xml - Magento 继承和重用模板变量

c++ - 指向结构类型的指针如何表现?

c++ - 输出迭代器适配器计数但不复制

c++ - 在 C++ 中从字节数组检索整数的最佳方法是什么

c++ - 如何将模板化类作为默认模板类型传递给自己的类?

c++ - 指针中的 constexpr 有区别吗

c - 指针移动 cs[1] 和 *cs++ 有什么区别

C++ using 声明

c++ - 通过资源文件获取opengl的纹理图片(c++/visual studio 2008)

python - django 只打印一次循环值