annotate gcc/testsuite/g++.dg/cpp0x/noexcept57.C @ 152:2b5abeee2509

update gcc11
author anatofuz
date Mon, 25 May 2020 07:50:57 +0900
parents
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
152
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
1 // PR c++/93901
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
2 // { dg-do compile { target c++11 } }
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
3
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
4 void *operator new (__SIZE_TYPE__, void *p) noexcept { return p; }
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
5
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
6 extern void *mem;
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
7
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
8 constexpr bool YES = true;
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
9
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
10 struct NoexceptTrueCtor {
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
11 NoexceptTrueCtor() noexcept(true);
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
12 };
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
13 void NoexceptTrueFun() noexcept(true);
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
14
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
15 struct NoexceptYesCtor {
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
16 NoexceptYesCtor() noexcept(YES);
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
17 };
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
18 void NoexceptYesFun() noexcept(YES);
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
19
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
20 struct NoexceptOneEqOneCtor {
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
21 NoexceptOneEqOneCtor() noexcept(1 == 1);
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
22 };
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
23 void NoexceptOneEqOneFun() noexcept(1 == 1);
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
24
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
25 struct NoNoexceptCtor {
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
26 NoNoexceptCtor();
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
27 };
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
28 void NoNoexceptFun();
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
29
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
30 static_assert(noexcept(new(mem) NoexceptTrueCtor), "2"); // OK
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
31 static_assert(noexcept(NoexceptTrueFun()), "3"); // OK
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
32
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
33 static_assert(noexcept(new(mem) NoexceptYesCtor), "5"); // fail
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
34 static_assert(noexcept(NoexceptYesFun()), "6"); // OK
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
35
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
36 static_assert(noexcept(new(mem) NoexceptOneEqOneCtor), "8"); // fail
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
37 static_assert(noexcept(NoexceptOneEqOneFun()), "9"); // OK
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
38
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
39 static_assert(!noexcept(new(mem) NoNoexceptCtor), "11"); // OK
2b5abeee2509 update gcc11
anatofuz
parents:
diff changeset
40 static_assert(!noexcept(NoNoexceptFun()), "12"); // OK