为什么默认模板参数只允许在类模板上使用?为什么我们不能在成员函数模板中定义默认类型?例如:
struct mycclass {
template<class T=int>
void mymember(T* vec) {
// ...
}
};
相反,C++强制仅在类模板上允许使用默认模板参数。
最佳答案
给出默认模板参数是有意义的。例如,您可以创建一个排序函数:
template<typename Iterator,
typename Comp = std::less<
typename std::iterator_traits<Iterator>::value_type> >
void sort(Iterator beg, Iterator end, Comp c = Comp()) {
...
}
C++ 0x将它们引入C++。请参阅Bjarne Stroustrup的以下缺陷报告:Default Template Arguments for Function Templates和他说的话
关于c++ - 函数模板的默认模板参数,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/2447458/