在C模板类中,我可以使用相同的名称对template参数进行typedef吗?

前端之家收集整理的这篇文章主要介绍了在C模板类中,我可以使用相同的名称对template参数进行typedef吗?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
如果我有一个模板类:
template<typename Layout>
class LayoutHandler : Handler {
};

并且我想将参数Layout公开给类的用户.
然后:

template<typename Layout>
class LayoutHandler : Handler {
public:
    typedef Layout Layout; // using the same name
};

VS2012可以编译这段代码,并给出预期的结果. (我使用std :: is_same来检查它.)
在标准C 03或C 11中是否允许这样做?

解决方法

C 11中不允许.

typedef是一个声明. (见第7.1.3节)

模板参数不能在其范围内重新声明(包括嵌套作用域). (见第14.6.1.6节)

C++11 draft standard n3242

猜你在找的C&C++相关文章