35 lines · cpp
1// RUN: %clang_cc1 -fsyntax-only -verify %s -std=c++112 3struct A {4 operator int&();5 operator long*& ();6};7 8struct B {9 operator long&();10 operator int*& ();11};12 13struct C : B, A { };14 15void test(C c) {16 ++c; // expected-error {{use of overloaded operator '++' is ambiguous}}\17 // expected-note {{built-in candidate operator++(int &)}} \18 // expected-note {{built-in candidate operator++(long &)}} \19 // expected-note {{built-in candidate operator++(long *&)}} \20 // expected-note {{built-in candidate operator++(int *&)}}21}22 23struct A1 { operator volatile int&(); };24 25struct B1 { operator volatile long&(); };26 27struct C1 : B1, A1 { };28 29void test(C1 c) {30 ++c; // expected-error {{use of overloaded operator '++' is ambiguous}} \31 // expected-note {{built-in candidate operator++(volatile int &)}} \32 // expected-note {{built-in candidate operator++(volatile long &)}}33}34 35