Предположим, что следующий код:
namespace test
{
namespace detail
{
}
inline namespace v1
{
namespace detail
{
void foo()
{
}
}
}
}
int main()
{
test::detail::foo();
}
Как мы видим, этот код компилируется с помощью Clang; не с GCC, - GCC жалуется, что ссылка на namespace detail
неоднозначна:
main.cpp:20:11: error: reference to 'detail' is ambiguous
test::detail::foo();
^
main.cpp:4:5: note: candidates are: namespace test::detail { }
{
^
main.cpp:10:9: note: namespace test::v1::detail { }
{
^
Какой компилятор делает правильную вещь здесь?