// RUN: %clang_cc1 -fsyntax-only -verify -std=c++11 %s // C++11 [basic.lookup.argdep]p2 // // [...] If an associated namespace is an inline namespace (10.3.1), its // enclosing namespace is also included in the set. If an associated // namespace directly contains inline namespaces, those inline namespaces // are also included in the set. namespace test1 { namespace L { namespace M { inline namespace N { inline namespace O { struct S {}; void f1(S); } void f2(S); } void f3(S); } void f4(M::S); // expected-note {{declared here}} } void test() { L::M::S s; f1(s); // ok f2(s); // ok f3(s); // ok f4(s); // expected-error {{use of undeclared}} } } namespace test2 { namespace L { struct S {}; inline namespace M { inline namespace N { inline namespace O { void f1(S); } void f2(S); } void f3(S); } void f4(S); } void test() { L::S s; f1(s); // ok f2(s); // ok f3(s); // ok f4(s); // ok } }