1*67e74705SXin Li // RUN: %clang_cc1 -fsyntax-only -verify -std=c++11 %s 2*67e74705SXin Li 3*67e74705SXin Li struct PR10757 { 4*67e74705SXin Li bool operator~() = delete; // expected-note {{explicitly deleted}} 5*67e74705SXin Li bool operator==(const PR10757&) = delete; // expected-note {{explicitly deleted}} 6*67e74705SXin Li operator float(); 7*67e74705SXin Li }; PR10757f()8*67e74705SXin Liint PR10757f() { 9*67e74705SXin Li PR10757 a1; 10*67e74705SXin Li // FIXME: We get a ridiculous number of "built-in candidate" notes here... 11*67e74705SXin Li if(~a1) {} // expected-error {{overload resolution selected deleted operator}} expected-note 8 {{built-in candidate}} 12*67e74705SXin Li if(a1==a1) {} // expected-error {{overload resolution selected deleted operator}} expected-note 144 {{built-in candidate}} 13*67e74705SXin Li } 14*67e74705SXin Li 15*67e74705SXin Li struct DelOpDel { 16*67e74705SXin Li // FIXME: In MS ABI, we error twice below. ~DelOpDelDelOpDel17*67e74705SXin Li virtual ~DelOpDel() {} // expected-error 1-2 {{attempt to use a deleted function}} 18*67e74705SXin Li void operator delete(void*) = delete; // expected-note 1-2 {{deleted here}} 19*67e74705SXin Li }; 20