为什么默认模板参数只允许在类模板上使用?为什么我们不能在成员函数模板中定义默认类型?例如:

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/

10-12 07:24
查看更多