comparison gcc/testsuite/g++.dg/cpp2a/concepts-traits1.C @ 145:1830386684a0

gcc-9.2.0
author anatofuz
date Thu, 13 Feb 2020 11:34:05 +0900
parents
children
comparison
equal deleted inserted replaced
131:84e7813d76e9 145:1830386684a0
1 // { dg-options "-std=c++2a" }
2
3 template<typename T>
4 concept Nothrow_assignable = __has_nothrow_assign(T);
5
6 template<typename T>
7 concept Nothrow_constructible = __has_nothrow_constructor(T);
8
9 template<typename T>
10 concept Nothrow_copyable = __has_nothrow_copy(T);
11
12 template<typename T>
13 concept Trivially_assignable = __has_trivial_assign(T);
14
15 template<typename T>
16 concept Trivially_constructible = __has_trivial_constructor(T);
17
18 template<typename T>
19 concept Trivially_copyable = __has_trivial_copy(T);
20
21 template<typename T>
22 concept Trivially_destructible = __has_trivial_destructor(T);
23
24 template<typename T>
25 concept Dynamically_destructible = __has_virtual_destructor(T);
26
27 template<typename T>
28 concept Abstract = __is_abstract(T);
29
30 template<typename T>
31 concept Polymorphic = __is_polymorphic(T);
32
33 template<typename T>
34 concept Class = __is_class(T);
35
36 template<typename T>
37 concept Empty = __is_empty(T);
38
39 template<typename T>
40 concept Enum = __is_enum(T);
41
42 template<typename T>
43 concept Final = __is_final(T);
44
45 template<typename T>
46 concept Literal_type = __is_literal_type(T);
47
48 template<typename T>
49 concept Pod = __is_pod(T);
50
51 template<typename T>
52 concept Standard_layout = __is_standard_layout(T);
53
54 template<typename T>
55 concept Trivial = __is_trivial(T);
56
57 template<typename T>
58 concept Union = __is_union(T);
59
60 template<Nothrow_assignable T> void f1() { }
61 template<Nothrow_copyable T> void f2() { }
62 template<Nothrow_constructible T> void f3() { }
63 template<Trivially_assignable T> void f4() { }
64 template<Trivially_copyable T> void f5() { }
65 template<Trivially_constructible T> void f6() { }
66 template<Trivially_destructible T> void f7() { }
67 template<Dynamically_destructible T> void f8() { }
68 template<Class T> void f9() { }
69 template<Empty T> void f10() { }
70 template<Standard_layout T> void f11() { }
71 template<Pod T> void f12() { }
72 template<Trivial T> void f13() { }
73 template<Polymorphic T> void f14() { }
74 template<Abstract T> void f15() { }
75 template<Final T> void f16() { }
76 template<Union T> void f17() { }
77 template<Enum T> void f18() { }
78
79 int main() {
80 f1<void>(); // { dg-error "" }
81 f2<void>(); // { dg-error "" }
82 f3<void>(); // { dg-error "" }
83 f4<void>(); // { dg-error "" }
84 f5<void>(); // { dg-error "" }
85 f6<void>(); // { dg-error "" }
86 f7<void>(); // { dg-error "" }
87 f8<void>(); // { dg-error "" }
88 f9<void>(); // { dg-error "" }
89 f10<void>(); // { dg-error "" }
90 f11<void>(); // { dg-error "" }
91 f12<void>(); // { dg-error "" }
92 f13<void>(); // { dg-error "" }
93 f14<void>(); // { dg-error "" }
94 f15<void>(); // { dg-error "" }
95 f16<void>(); // { dg-error "" }
96 f17<void>(); // { dg-error "" }
97 }