美文网首页
深入理解C++11 2.11 模板函数的默认模板参数

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

作者: zinclee123 | 来源:发表于2019-08-08 19:07 被阅读0次

    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(){}
    

    相关文章

      网友评论

          本文标题:深入理解C++11 2.11 模板函数的默认模板参数

          本文链接:https://www.haomeiwen.com/subject/tqsfjctx.html