| // RUN: %clang_cc1 -triple i686-pc-win32 -cxx-abi itanium -fsyntax-only %s |
| // RUN: %clang_cc1 -triple i686-pc-win32 -cxx-abi microsoft -verify %s |
| |
| // Should be accepted under the Itanium ABI (first RUN line) but rejected |
| // under the Microsoft ABI (second RUN line), as Microsoft ABI requires |
| // operator delete() lookups to be done at all virtual destructor declaration |
| // points. |
| |
| struct A { |
| void operator delete(void *); // expected-note {{member found by ambiguous name lookup}} |
| }; |
| |
| struct B { |
| void operator delete(void *); // expected-note {{member found by ambiguous name lookup}} |
| }; |
| |
| struct C : A, B { |
| ~C(); |
| }; |
| |
| struct VC : A, B { |
| virtual ~VC(); // expected-error {{member 'operator delete' found in multiple base classes of different types}} |
| }; |