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