c++11特性 template using,模板别名
作用:
当已经存在一个模板,其参数列表比较长,但是有一些模板参数默认基本是可以确定的,
因此可以使用这个模板别名来少些这些参数
例子:
template<typename T, bool flag>
class A {
public:
A(T num) : num_(num) {},
void execute() {
if (flag) do a....;
else do b....;
}
private:
T num_;
};
template<typename T>
using B = A<T, true>;
int main() {
A<int, true> a(5);
a.execute();
B<int> b(5);
b.execute(); // 效果和a.execute效果相同
return 0;
}
另一个看起来挺类似的,typedef typename ::template组合
但是typedef所取后的已经不再是模板类型了,而是具体的类型了,不能再使用<>来模板化