【问题标题】:Does an inline namespace have to be always qualified as such?内联命名空间是否必须始终如此限定?
【发布时间】:2017-03-02 22:19:34
【问题描述】:

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

【问题讨论】:

  • 这也被问到here,虽然没有回答

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


【解决方案1】:

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

所以我发现了什么:

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

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

【讨论】:

猜你喜欢
  • 2012-11-16
  • 2020-01-27
  • 1970-01-01
  • 2015-02-03
  • 2020-05-16
  • 2017-07-19
  • 1970-01-01
  • 2012-06-16
  • 1970-01-01
相关资源
最近更新 更多