内联命名空间是否必须始终符合要求?

时间:2017-03-02 22:19:35

标签: c++ c++11 namespaces inline

如果定义了名称空间inline,还需要声明扩展名称空间inline吗?换句话说,是否允许将名称空间声明为仅内联一次并省略扩展声明中的限定符?

1 个答案:

答案 0 :(得分:0)

我有机会问最好的顾问 - 编译器(g ++ 4.9.2):)

所以我发现了:

将namespces限定为在扩展定义中内联是不必要的。命名空间的类型似乎在定义声明(=编译器看到的第一个)中得到修复。随后的资格被忽略了。因此,如果有人试图在扩展名保留中内联命名空间,编译器就不会给出任何特殊警告,而只会抱怨缺少类/函数声明。

依赖于应用程序是否限定扩展名称空间。在我的情况下,没有必要,因为通过继承确保了明确的包含层次结构。如果不是这种情况,那么在头文件中限定内联命名空间可能仍然是个好主意,因为可能不知道哪个声明将是定义的。