如果命名空间定义为inline
,是否也需要声明扩展命名空间inline
?换句话说,是否允许将命名空间声明为仅内联一次并在扩展声明中省略限定符?
最佳答案
我有机会请教最好的顾问 - 编译器 (g++ 4.9.2) :)
所以我发现了:
没有必要在扩展定义中限定命名空间以内联。命名空间的类型似乎在定义声明中是固定的(=编译器看到的第一个)。随后的限定条件将被忽略。因此,如果有人试图在扩展定义中内联命名空间,编译器将不会给出任何特殊警告,而只会提示缺少类/函数声明。
仍然取决于应用程序是否限定扩展命名空间。在我的例子中,这是没有必要的,因为继承确保了清晰的包含层次结构。如果不是这种情况,那么在头文件中限定内联命名空间可能仍然是个好主意,因为可能不知道哪个声明将是定义声明。
关于c++ - 内联命名空间是否必须始终如此限定?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42567096/