c – 类声明类头中的全局限定
发布时间:2020-12-16 09:27:35 所属栏目:百科 来源:网络整理
导读:我们发现类似于以下内容(不要问……): namespace N { struct A { struct B; };}struct A { struct B; };using namespace N;struct ::A::B {}; // - point of interest 有趣的是,这与VS2005,icc 11.1和Comeau(在线)编译良好,但与GCC失败: global qualificat
我们发现类似于以下内容(不要问……):
namespace N { struct A { struct B; }; } struct A { struct B; }; using namespace N; struct ::A::B {}; // <- point of interest 有趣的是,这与VS2005,icc 11.1和Comeau(在线)编译良好,但与GCC失败:
从附件A的C 03开始,在我看来,GCC是对的: > class-head可以包含嵌套名称说明符和标识符 ……还是我忽略了什么? 解决方法
我认为你做得对:GCC在这种情况下实现了标准,而其他人则不那么严格(看看
issue #355).
您可以执行以下操作来解决语法限制 struct identity< ::A >::type::B {}; 或者您使用显式命名的typedef typedef ::A AHidden; struct AHidden::B { }; 或者,当然,您交换使用命名空间和嵌套类定义的顺序.请注意,附件A仅供参考.规范性文本见第5.1 / 7和9条. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
推荐文章
站长推荐
热点阅读