annotate gcc/testsuite/g++.dg/cpp0x/inh-ctor32.C @ 145:1830386684a0

gcc-9.2.0
author anatofuz
date Thu, 13 Feb 2020 11:34:05 +0900
parents
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
145
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
1 // { dg-do compile { target c++11 } }
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
2 // Minimized from the testcase for PR c++/88146,
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
3 // then turned into multiple variants.
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
4
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
5 // We issue an error when calling an inherited ctor with at least one
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
6 // argument passed through a varargs ellipsis, if the call is in an
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
7 // evaluated context. Even in nonevaluated contexts, we will
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
8 // instantiate constexpr templates (unlike non-constexpr templates),
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
9 // which might then issue errors that in nonevlauated contexts
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
10 // wouldn't be issued.
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
11
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
12 // In these variants, the inherited ctor is constexpr, but it's only
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
13 // called in unevaluated contexts, so no error is issued. The
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
14 // templateness of the ctor doesn't matter, because the only call that
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
15 // passes args through the ellipsis is in a noexcept expr, that is not
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
16 // evaluated. The ctors in derived classes are created and
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
17 // instantiated, discarding arguments passed through the ellipsis when
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
18 // calling base ctors, but that's not reported: we only report a
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
19 // problem when *calling* ctors that behave this way.
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
20 namespace unevaled_call {
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
21 namespace no_arg_before_ellipsis {
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
22 namespace without_template {
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
23 struct foo {
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
24 constexpr foo(...) {}
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
25 };
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
26 struct boo : foo {
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
27 using foo::foo;
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
28 };
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
29 struct bar : boo {
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
30 using boo::boo;
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
31 };
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
32 void f() noexcept(noexcept(bar{0}));
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
33 }
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
34
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
35 namespace with_template {
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
36 struct foo {
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
37 template <typename... T>
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
38 constexpr foo(...) {}
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
39 };
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
40 struct boo : foo {
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
41 using foo::foo;
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
42 };
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
43 struct bar : boo {
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
44 using boo::boo;
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
45 };
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
46 void f() noexcept(noexcept(bar{0}));
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
47 }
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
48 }
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
49
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
50 namespace one_arg_before_ellipsis {
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
51 namespace without_template {
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
52 struct foo {
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
53 constexpr foo(int, ...) {}
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
54 };
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
55 struct boo : foo {
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
56 using foo::foo;
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
57 };
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
58 struct bar : boo {
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
59 using boo::boo;
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
60 };
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
61 void f() noexcept(noexcept(bar{0,1}));
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
62 }
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
63
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
64 namespace with_template {
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
65 struct foo {
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
66 template <typename T>
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
67 constexpr foo(T, ...) {}
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
68 };
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
69 struct boo : foo {
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
70 using foo::foo;
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
71 };
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
72 struct bar : boo {
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
73 using boo::boo;
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
74 };
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
75 void f() noexcept(noexcept(bar{0,1}));
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
76 }
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
77 }
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
78 }
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
79
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
80 // In these variants, the inherited ctor is constexpr, and it's called
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
81 // in unevaluated contexts in ways that would otherwise trigger the
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
82 // sorry message. Here we check that the message is not issued at
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
83 // those calls, nor at subsequent calls that use the same ctor without
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
84 // passing arguments through its ellipsis. We check that it is issued
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
85 // later, when we pass the ctor arguments through the ellipsis.
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
86 namespace evaled_bad_call_in_u {
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
87 namespace one_arg_before_ellipsis {
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
88 namespace without_template {
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
89 struct foo {
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
90 constexpr foo(int, ...) {}
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
91 };
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
92 struct boo : foo {
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
93 using foo::foo;
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
94 };
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
95 struct bar : boo {
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
96 using boo::boo;
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
97 };
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
98 void f() noexcept(noexcept(bar{0, 1}));
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
99 bar t(0);
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
100 bar u(0, 1); // { dg-message "sorry, unimplemented: passing arguments to ellipsis" }
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
101 }
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
102
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
103 namespace with_template {
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
104 struct foo {
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
105 template <typename T>
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
106 constexpr foo(T, ...) {}
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
107 };
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
108 struct boo : foo {
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
109 using foo::foo;
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
110 };
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
111 struct bar : boo {
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
112 using boo::boo;
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
113 };
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
114 void f() noexcept(noexcept(bar{0,1}));
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
115 bar t(0);
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
116 bar u(0,1); // { dg-message "sorry, unimplemented: passing arguments to ellipsis" }
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
117 }
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
118 }
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
119
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
120 namespace no_arg_before_ellipsis {
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
121 namespace without_template {
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
122 struct foo {
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
123 constexpr foo(...) {}
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
124 };
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
125 struct boo : foo {
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
126 using foo::foo;
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
127 };
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
128 struct bar : boo {
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
129 using boo::boo;
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
130 };
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
131 void f() noexcept(noexcept(bar{0}));
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
132 bar u(0); // { dg-message "sorry, unimplemented: passing arguments to ellipsis" }
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
133 }
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
134
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
135 namespace with_template {
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
136 struct foo {
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
137 template <typename... T>
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
138 constexpr foo(...) {}
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
139 };
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
140 struct boo : foo {
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
141 using foo::foo;
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
142 };
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
143 struct bar : boo {
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
144 using boo::boo;
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
145 };
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
146 void f() noexcept(noexcept(bar{0}));
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
147 bar u(0); // { dg-message "sorry, unimplemented: passing arguments to ellipsis" }
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
148 }
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
149 }
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
150 }
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
151
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
152 // Now, instead of instantiating a class that uses a derived ctor, we
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
153 // introduce another template ctor that will use the varargs ctor to
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
154 // initialize its base class. The idea is to verify that the error
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
155 // message is issued, even if the instantiation occurs in a
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
156 // nonevaluated context, e.g., for constexpr templates. In the
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
157 // inherited_derived_ctor, we check that even an inherited ctor of a
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
158 // constexpr ctor is instantiated and have an error message issued.
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
159 namespace derived_ctor {
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
160 namespace direct_derived_ctor {
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
161 namespace constexpr_noninherited_ctor {
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
162 struct foo {
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
163 template <typename T>
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
164 constexpr foo(T, ...) {}
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
165 };
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
166 struct boo : foo {
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
167 using foo::foo;
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
168 };
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
169 struct bar : boo {
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
170 template <typename ...T>
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
171 constexpr bar(T ... args) : boo(args...) {}
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
172 };
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
173 void f() noexcept(noexcept(bar{0,1}));
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
174 }
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
175
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
176 namespace no_constexpr_noninherited_ctor {
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
177 struct foo {
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
178 template <typename T>
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
179 constexpr foo(T, ...) {}
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
180 };
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
181 struct boo : foo {
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
182 using foo::foo;
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
183 };
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
184 struct bar : boo {
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
185 template <typename ...T>
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
186 /* constexpr */ bar(T ... args) : boo(args...) {}
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
187 };
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
188 void f() noexcept(noexcept(bar{0,1}));
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
189 }
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
190 }
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
191
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
192 namespace inherited_derived_ctor {
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
193 namespace constexpr_noninherited_ctor {
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
194 struct foo {
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
195 template <typename T>
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
196 constexpr foo(T, ...) {}
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
197 };
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
198 struct boo : foo {
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
199 using foo::foo;
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
200 };
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
201 struct bor : boo {
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
202 template <typename ...T>
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
203 constexpr bor(T ... args) : boo(args...) {}
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
204 };
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
205 struct bar : bor {
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
206 using bor::bor;
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
207 };
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
208 void f() noexcept(noexcept(bar{0,1}));
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
209 }
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
210
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
211 namespace no_constexpr_noninherited_ctor {
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
212 struct foo {
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
213 template <typename T>
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
214 constexpr foo(T, ...) {}
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
215 };
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
216 struct boo : foo {
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
217 using foo::foo;
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
218 };
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
219 struct bor : boo {
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
220 template <typename ...T>
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
221 /* constexpr */ bor(T ... args) : boo(args...) {}
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
222 };
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
223 struct bar : bor {
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
224 using bor::bor;
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
225 };
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
226 void f() noexcept(noexcept(bar{0,1}));
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
227 }
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
228 }
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
229 }