如果定义了名称空间inline
,还需要声明扩展名称空间inline
吗?换句话说,是否允许将名称空间声明为仅内联一次并省略扩展声明中的限定符?
答案 0 :(得分:0)
我有机会问最好的顾问 - 编译器(g ++ 4.9.2):)
所以我发现了:
将namespces限定为在扩展定义中内联是不必要的。命名空间的类型似乎在定义声明(=编译器看到的第一个)中得到修复。随后的资格被忽略了。因此,如果有人试图在扩展名保留中内联命名空间,编译器就不会给出任何特殊警告,而只会抱怨缺少类/函数声明。
依赖于应用程序是否限定扩展名称空间。在我的情况下,没有必要,因为通过继承确保了明确的包含层次结构。如果不是这种情况,那么在头文件中限定内联命名空间可能仍然是个好主意,因为可能不知道哪个声明将是定义的。