首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >防止将命名空间劫持为内联命名空间

防止将命名空间劫持为内联命名空间
EN

Stack Overflow用户
提问于 2015-03-25 17:00:45
回答 1查看 167关注 0票数 1

命名空间声明为inline必须是第一个,还是任何(重新打开的)名称空间在任何时候都可以解密为inline

如果是这样的话,是否有一种方法可以防止某人将名称空间声明为inline (事后)?

代码语言:javascript
复制
#include <iostream>

namespace outer {
//inline
namespace inner {
}}

//inline namespace std {}

namespace outer {
inline
namespace inner {
    void foo() {
        std::cout << "foo" << std::endl;
        //::cout << "foo" << endl;
    }
}}

int main() {
    outer::foo();
}

编辑

gcc似乎接受了这一点,因为我最初只在coliru上测试过,但是clang拒绝它

这是个虫子吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-03-25 17:13:57

7.3.1/7向我们表明,必须在第一次声明时内联宣布:

如果可选的初始内联关键字出现在特定名称空间的命名空间定义中,则该名称空间被声明为内联命名空间。内联关键字只能在扩展名称空间定义中使用,前提是它以前用于该名称空间的原始命名空间定义。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29261910

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档