【发布时间】:2013-08-20 11:27:04
【问题描述】:
我是在 C++ 中使用模板的新手,我想根据< 和> 之间使用的类型做不同的事情,所以function<int>() 和function<char>() 不会做同样的事情。
我怎样才能做到这一点?
template<typename T> T* function()
{
if(/*T is int*/)
{
//...
}
if(/*T is char*/)
{
//...
}
return 0;
}
【问题讨论】:
-
在你的情况下,
T不能从电话中推断出来,专业化是要走的路(正如答案所暗示的那样)。但是,如果您实际上在参数中使用T并对其进行推断,则最好使用普通重载和avoiding function template specialisation。
标签: c++ function templates c++11 types