Template 基础篇-参数魔法
Template所代表的泛型编程是C++语言中的重要的组成部分,我将通过几篇blog对这半年以来的学习做一个系统的总结,本文是基础篇的第三部分。
除了使用类型作为模板的参数之外,模板参数有更多的用法,以下做个详细介绍。
默认实参
我们可以通过给模板指定默认实参,为用户推荐合适的默认设定,让用户在只指定部分(或完全不指定)实参的情况下使用模板。
注意:模板的默认实参与函数的默认实参一样,必须从右向左定义。
在C++98中,只能为类模板指定默认实参。
template<typename T = int, typename U> //error, 必须从右向左
struct Wrapper1 {
T t;
};
template<typename T, typename U = int> //ok
struct Wrapper2 {
T t;
};
Wrapper2<double> w;
template<typename T = int>
struct Wrapper3 {
T t;
};
Wrapper3<> w; /