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

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

概述如果我有一个模板类: template<typename Layout>class LayoutHandler : Handler {}; 并且我想将参数Layout公开给类的用户. 然后: template<typename Layout>class LayoutHandler : Handler {public: typedef Layout Layout; // using 如果我有一个模板类:
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模板类中,我可以使用相同的名称对template参数进行typedef吗?全部内容,希望文章能够帮你解决在C模板类中,我可以使用相同的名称对template参数进行typedef吗?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1245928.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-07
下一篇 2022-06-07

发表评论

登录后才能评论

评论列表(0条)

保存