152
|
1 // PR c++/93901
|
|
2 // { dg-do compile { target c++11 } }
|
|
3
|
|
4 void *operator new (__SIZE_TYPE__, void *p) noexcept { return p; }
|
|
5
|
|
6 extern void *mem;
|
|
7
|
|
8 constexpr bool YES = true;
|
|
9
|
|
10 struct NoexceptTrueCtor {
|
|
11 NoexceptTrueCtor() noexcept(true);
|
|
12 };
|
|
13 void NoexceptTrueFun() noexcept(true);
|
|
14
|
|
15 struct NoexceptYesCtor {
|
|
16 NoexceptYesCtor() noexcept(YES);
|
|
17 };
|
|
18 void NoexceptYesFun() noexcept(YES);
|
|
19
|
|
20 struct NoexceptOneEqOneCtor {
|
|
21 NoexceptOneEqOneCtor() noexcept(1 == 1);
|
|
22 };
|
|
23 void NoexceptOneEqOneFun() noexcept(1 == 1);
|
|
24
|
|
25 struct NoNoexceptCtor {
|
|
26 NoNoexceptCtor();
|
|
27 };
|
|
28 void NoNoexceptFun();
|
|
29
|
|
30 static_assert(noexcept(new(mem) NoexceptTrueCtor), "2"); // OK
|
|
31 static_assert(noexcept(NoexceptTrueFun()), "3"); // OK
|
|
32
|
|
33 static_assert(noexcept(new(mem) NoexceptYesCtor), "5"); // fail
|
|
34 static_assert(noexcept(NoexceptYesFun()), "6"); // OK
|
|
35
|
|
36 static_assert(noexcept(new(mem) NoexceptOneEqOneCtor), "8"); // fail
|
|
37 static_assert(noexcept(NoexceptOneEqOneFun()), "9"); // OK
|
|
38
|
|
39 static_assert(!noexcept(new(mem) NoNoexceptCtor), "11"); // OK
|
|
40 static_assert(!noexcept(NoNoexceptFun()), "12"); // OK
|