简短形式:如何在C++ 11中为根(全局)命名空间定义别名?它可能看起来像
namespace root_namespace = :: ;
上面的裸体形式的范围解析运算符是全局命名空间的某个句柄的占位符.我在GCC Internals Manual中读到了这一点
... [编译器]整个中间表示的根是变量global_namespace.这是::在C++源代码中指定的命名空间...全局命名空间的名称是::,即使在C++中,全局命名空间是未命名的.
PS EDIT:对于迄今为止的受访者,我添加了一个痛苦的长篇表来解决以下长篇形式后的一些问题,因为它可能会澄清一些事情.和追随者,如果你看到我们而不是彼此说话,那就深入挖掘.
长形式:其潜在用途的一个例子如下.如果不满意,那么是的,这是一个学术问题; 看到这个之后痛苦的长形.
想象一下,你的老板在一天内闯入并说:"我刚读了一本关于后实证主义的书.摆脱它namespace ObjectiveReality." 在下面的代码,你需要做的"一切"是忽略我喜欢标线/* -> */这样/* <- */.你可以为目前的中间嵌套级别做到这一点; 但是,我不确定如何定义全局范围namespace current_authority以允许简单地省略第一个非全局命名空间.
#include <iostream>
#include <iomanip>
// ...
using cat_is_alive = std::true_type ; // because I like cats
using cat_is_alive = ::cat_is_alive ; // seems to work, see `g++ -v` …Run Code Online (Sandbox Code Playgroud)