Templates 专门化模板函数中的模板参数
如何专门化下面的模板参数:Templates 专门化模板函数中的模板参数,templates,visual-c++,Templates,Visual C++,如何专门化下面的模板参数: template bool IsContainer(){return false;} 要喜欢这样(您可能理解我的意思,下面的代码无法工作): 模板 bool IsContainer(){return true;} 致以最崇高的敬意。 陈龙琴。您应该删除模板参数: template< class Container > bool IsContainer() { return false; } template<> bool IsContai
template
bool IsContainer(){return false;}
要喜欢这样(您可能理解我的意思,下面的代码无法工作):
模板
bool IsContainer(){return true;}
致以最崇高的敬意。
陈龙琴。您应该删除模板参数:
template< class Container >
bool IsContainer() { return false; }
template<>
bool IsContainer< std::vector< int > > () { return true; }
...
std::cout << IsContainer< int >() << std::endl;
std::cout << IsContainer< std::vector< int > > () << std::endl;
...
模板
bool IsContainer(){return false;}
模板
bool-IsContainer>(){return true;}
...
std::cout()()模板参数是将模板作为参数的模板的参数std::vector
命名模板,但std::vector
不命名模板。后者命名了一个模板的显式专门化,它只是一个类型,而不是一个模板。C++11中不允许函数模板的部分专门化。o(例如,C++11允许函数模板参数的默认参数)是正确的。太糟糕了,他们决定不插入函数模板的部分专门化,至少在C++11:-(我认为这是一个深思熟虑的决定。函数模板的显式专门化已经很混乱,因为在选择专门化之前仍然存在重载解析。