57 lines
1.1 KiB
C++
57 lines
1.1 KiB
C++
// 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
|
|
}
|
|
}
|