函数模板的默认模板参数

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


struct mycclass {

  template<class T=int>

  void mymember(T* vec) {

    // ...

  }

};

相反,C ++强制仅在类模板上允许使用默认模板参数。


Smart猫小萌
浏览 693回答 3
3回答

偶然的你

引用C ++模板:完整指南(第207页):最初将模板添加到C ++语言时,显式函数模板参数不是有效的构造。始终必须从调用表达式中推导函数模板参数。结果,似乎没有令人信服的理由允许默认函数模板参数,因为默认值总是会被推导的值覆盖。
打开App,查看更多内容
随时随地看视频慕课网APP