加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

发布时间:2020-12-16 05:17:54 所属栏目:百科 来源:网络整理
导读:如果我有一个模板类: templatetypename Layoutclass LayoutHandler : Handler {}; 并且我想将参数Layout公开给类的用户. 然后: templatetypename Layoutclass LayoutHandler : Handler {public: typedef Layout Layout; // using the same name}; VS2012可
如果我有一个模板类:
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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读