Mercurial > hg > CbC > CbC_gcc
view gcc/testsuite/g++.dg/cpp0x/noexcept01.C @ 131:84e7813d76e9
gcc-8.2
author | mir3636 |
---|---|
date | Thu, 25 Oct 2018 07:37:49 +0900 |
parents | 04ced10e8804 |
children |
line wrap: on
line source
// Test for noexcept-expression // { dg-do compile { target c++11 } } // { dg-options "-O2" } #include <typeinfo> #define SA(X) static_assert(X, #X) void f(); void g() throw(); SA(noexcept(g())); SA(!noexcept(f())); SA(!noexcept(throw 1)); SA(noexcept(42)); struct A { virtual ~A(); }; struct B: public A { virtual ~B(); }; A* ap; struct C { }; C* cp; SA (noexcept (dynamic_cast<B*>(ap))); SA (!noexcept (dynamic_cast<B&>(*ap))); SA (!noexcept (typeid (*ap))); SA (noexcept (typeid (*cp))); SA (!noexcept (true ? 1 : throw 1)); SA (!noexcept (true || true ? 1 : throw 1)); SA (noexcept (C())); struct D { D() throw(); }; SA (noexcept (D())); struct E { E() throw(); ~E(); }; SA (noexcept (E())); struct F { virtual void f(); }; SA (noexcept (F())); struct G { G() = default; ~G() = default; }; SA (noexcept (G())); template <class T, bool b> void tf() { SA (noexcept (T()) == b); } template void tf<int,true>(); template void tf<E, true>(); // Make sure that noexcept uses the declared exception-specification, not // any knowledge we might have about whether or not the function really // throws. void h() { } SA(!noexcept(h()));