您的位置:首页 > 其它

局部和匿名类型作模板实参

2013-11-03 00:20 1081 查看
在C++98中,模板的实参类型有限制,即局部类型和匿名类型不能作为模板实参。

template <typename T> class X{};
template <typename T> void TempFun(T t){}
struct A{} a;
struct {int i;} b;    // b是匿名类型变量
typedef struct {int i;} B;    // B是匿名类型

void fun() {
struct C{} c;    // C是局部类型
X<A> x1;
X<B> x2;
X<C> x3;
TempFun(a);
TempFun(b);
TempFun(c);
}


编译结果如下:



可以看到,使用c++98编译时,局部类型,匿名类型都无法作为模板实参,这些限制都是没有任何意义的,所以c++11作了改进,以上代码在c++11中编译是OK 的。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: