diff --git a/clang/test/CXX/drs/dr11xx.cpp b/clang/test/CXX/drs/dr11xx.cpp --- a/clang/test/CXX/drs/dr11xx.cpp +++ b/clang/test/CXX/drs/dr11xx.cpp @@ -4,6 +4,46 @@ // RUN: %clang_cc1 -std=c++17 %s -verify -fexceptions -fcxx-exceptions -pedantic-errors // RUN: %clang_cc1 -std=c++2a %s -verify -fexceptions -fcxx-exceptions -pedantic-errors +namespace dr1111 { // dr1111: yes +namespace example1 { +template struct set; + +struct X { + template void set(const T &value); +}; +void foo() { + X x; +#pragma clang diagnostic push +#if __cplusplus < 201103L +#pragma clang diagnostic ignored "-Wambiguous-member-template" +#endif + x.set(3.2); +#pragma clang diagnostic pop +} + +struct Y {}; +void bar() { + Y y; + y.set(3.2); // expected-error {{no member named 'set' in 'dr1111::example1::Y'}} +} +} // namespace example1 + +namespace example2 { +struct A {}; +namespace N { +struct A { + void g() {} + template operator T(); +}; +} // namespace N + +void baz() { + N::A a; + a.operator A(); +} +} // namespace example2 +} // namespace dr1111 + namespace dr1113 { // dr1113: partial namespace named { extern int a; // expected-note {{previous}} diff --git a/clang/www/cxx_dr_status.html b/clang/www/cxx_dr_status.html --- a/clang/www/cxx_dr_status.html +++ b/clang/www/cxx_dr_status.html @@ -6473,7 +6473,7 @@ 1111 C++11 Remove dual-scope lookup of member template names - Unknown + Yes 1112