// RUN: %clang_cc1 -std=c++11 -fexceptions -fcxx-exceptions -fsyntax-only -verify %s
// RUN: %clang_cc1 -DUSE -std=c++11 -fexceptions -fcxx-exceptions -fsyntax-only -verify %s
// Maybe force the implicit declaration of 'operator delete' and 'operator
// delete[]'. This should make no difference to anything!
void
// Deallocation functions are implicitly noexcept.
// Thus, explicit specs aren't allowed to conflict.
void operator delete; // expected-warning {{function previously declared with an explicit exception specification redeclared with an implicit exception specification}}
void operator delete[]; // expected-warning {{function previously declared with an explicit exception specification redeclared with an implicit exception specification}}
static_assert;
static_assert;
// Same goes for explicit declarations.
void operator delete;
void operator delete[];
static_assert;
static_assert;
// But explicit specs stay.
void operator delete throw; // expected-note {{previous}}
static_assert;
void operator delete noexcept; // expected-error {{does not match}}