c++ - 内联命名空间是否必须始终如此限定?

标签 c++ c++11 namespaces inline

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

最佳答案

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

所以我发现了:

没有必要在扩展定义中限定命名空间以内联。命名空间的类型似乎在定义声明中是固定的(=编译器看到的第一个)。随后的限定条件将被忽略。因此,如果有人试图在扩展定义中内联命名空间,编译器将不会给出任何特殊警告,而只会提示缺少类/函数声明。

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

关于c++ - 内联命名空间是否必须始终如此限定?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42567096/

相关文章:

c++ - 为什么要实例化shared_ptr调用析构函数?

c# - 我可以在 C# 中不指定类名的情况下将静态类作为命名空间导入来调用其方法吗?

c# - 是否可以在同一个文件 (.cs) 中添加 1 个以上的命名空间?

c++ - 我必须将 Qt 库与我的包一起部署吗?

c# - Visual Studio : C++\CLI wrapper assembly path dependency problems

C++11 字符串的分配要求

xml - 是 xsi : prefix assumed to be known in XML?

c++:如何将整数添加到字符串

c++ - 是否可以在运行时修改可执行文件?

c++ - Qt 如何在 QtConcurrent 中绑定(bind)指向非静态成员函数的指针?