diff options
Diffstat (limited to 'test/SemaCXX/overloaded-operator.cpp')
-rw-r--r-- | test/SemaCXX/overloaded-operator.cpp | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/test/SemaCXX/overloaded-operator.cpp b/test/SemaCXX/overloaded-operator.cpp index feb7c71..369e9eb 100644 --- a/test/SemaCXX/overloaded-operator.cpp +++ b/test/SemaCXX/overloaded-operator.cpp @@ -519,3 +519,15 @@ namespace ConversionVersusTemplateOrdering { int x = a; int y = b; } + +namespace NoADLForMemberOnlyOperators { + template<typename T> struct A { typename T::error e; }; // expected-error {{type 'char' cannot be used prior to '::'}} + template<typename T> struct B { int n; }; + + void f(B<A<void> > b1, B<A<int> > b2, B<A<char> > b3) { + b1 = b1; // ok, does not instantiate A<void>. + (void)b1->n; // expected-error {{is not a pointer}} + b2[3]; // expected-error {{does not provide a subscript}} + b3 / 0; // expected-note {{in instantiation of}} expected-error {{invalid operands to}} + } +} |