深入理解C++11 2.11 模板函数的默认模板参数

C++98中,类模板支持默认模板参数,但是函数模板并不支持,C++11则支持了函数模板的默认参数。如:

template<typename T = int>
class DefClass {};          //C++98编译通过,C++11编译通过

template<typename T = int>
void DefTempParm() {}      //C++98编译失败,C++11编译通过

并且,类模板的默认参数必须从右往走定义,而函数模板则不做限制。如:

template<typename T1 = int, typename T2 = double, typename T3 = float> //编译通过
class DefClass1 {};

template<typename T1, typename T2 = double, typename T3 = float>      //编译通过
class DefClass2 {};

template<typename T1 = int, typename T2, typename T3 = float>         //编译失败
class DefClass3 {};

template<typename T1 = int, typename T2, typename T3 = float>         //编译通过
void DefMethod(){}
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容