考虑以下演示程序
#include <iostream>
inline namespace A
{
}
namespace A:: inline B
{
void f() { std::cout << "Hello nested namespace definition.\n"; }
}
int main()
{
f();
return 0;
}
编译器对程序的编译clang HEAD 11.0.0
结果如下
prog.cc:7:11: warning: inline namespace reopened as a non-inline namespace
namespace A:: inline B
^
inline
prog.cc:3:18: note: previous definition is here
inline namespace A
^
1 warning generated.
Hello nested namespace definition.
但是根据嵌套命名空间定义的语法,我可能不会inline
在命名空间 A 之前使用关键字。
那么这是编译器的错误还是我做错了什么?
顺便说一句,编译器gcc HEAD 10.0.1 20200
在没有任何警告的情况下编译程序。