@@ -157,66 +157,55 @@ static_assert(And1<S, S>() == 1);
157157// FIXME: The diagnostics are not so great
158158static_assert (And1<int >() == 1 ); // expected-error {{no matching function for call to 'And1'}}
159159 // expected-note@#and1 {{candidate template ignored: constraints not satisfied [with T = <int>]}}
160- // expected-note@#and1 {{because 'typename T::type' does not satisfy 'C'}}
161- // expected-note@#C {{because 'T' does not satisfy 'A'}}
160+ // expected-note@#and1 {{because substituted constraint expression is ill-formed: type 'int' cannot be used prior to '::' because it has no members}}
162161
163162static_assert (And1<S, int >() == 1 ); // expected-error {{no matching function for call to 'And1'}}
164163 // expected-note@#and1 {{candidate template ignored: constraints not satisfied [with T = <S, int>]}}
165- // expected-note@#and1 {{because 'typename T::type' does not satisfy 'C'}}
166- // expected-note@#C {{because 'T' does not satisfy 'A'}}
164+ // expected-note@#and1 {{because substituted constraint expression is ill-formed: type 'int' cannot be used prior to '::' because it has no members}}
167165
168166static_assert (And1<int , S>() == 1 ); // expected-error {{no matching function for call to 'And1'}}
169167 // expected-note@#and1 {{candidate template ignored: constraints not satisfied [with T = <int, S>]}}
170- // expected-note@#and1 {{because 'typename T::type' does not satisfy 'C'}}
171- // expected-note@#C {{because 'T' does not satisfy 'A'}}
168+ // expected-note@#and1 {{because substituted constraint expression is ill-formed: type 'int' cannot be used prior to '::' because it has no members}}
172169
173170static_assert (And2<S>() == 2 );
174171static_assert (And2<S, S>() == 2 );
175172static_assert (And2<int >() == 2 ); // expected-error {{no matching function for call to 'And2'}}
176173 // expected-note@#and2 {{candidate template ignored: constraints not satisfied [with T = int, U = <>]}}
177- // expected-note@#and2 {{because 'typename U::type' does not satisfy 'C'}}
178- // expected-note@#C {{because 'T' does not satisfy 'A'}}
174+ // expected-note@#and2 {{because substituted constraint expression is ill-formed: type 'int' cannot be used prior to '::' because it has no members}}
179175
180176
181177static_assert (And2<int , int >() == 2 ); // expected-error {{no matching function for call to 'And2'}}
182178 // expected-note@#and2 {{candidate template ignored: constraints not satisfied [with T = S, U = <int>]}} \
183- // expected-note@#and2 {{because 'typename U::type' does not satisfy 'C'}}
184- // expected-note@#C {{because 'T' does not satisfy 'A'}}
179+ // expected-note@#and2 {{because substituted constraint expression is ill-formed: type 'int' cannot be used prior to '::' because it has no members}}
185180
186181static_assert (And2<S, int >() == 2 ); // expected-error {{no matching function for call to 'And2'}}
187182 // expected-note@#and2 {{candidate template ignored: constraints not satisfied [with T = int, U = <S>]}}
188- // expected-note@#and2 {{because 'typename T::type' does not satisfy 'C'}}
189- // expected-note@#C {{because 'T' does not satisfy 'A'}}
183+ // expected-note@#and2 {{because substituted constraint expression is ill-formed: type 'int' cannot be used prior to '::' because it has no members}}
190184
191185static_assert (And2<int , S>() == 2 ); // expected-error {{no matching function for call to 'And2'}}
192186 // expected-note@#and2 {{candidate template ignored: constraints not satisfied [with T = int, U = <int>]}}
193- // expected-note@#and2 {{because 'typename T::type' does not satisfy 'C'}}
194- // expected-note@#C {{because 'T' does not satisfy 'A'}}
187+ // expected-note@#and2 {{because substituted constraint expression is ill-formed: type 'int' cannot be used prior to '::' because it has no members}}
195188
196189static_assert (And3<S>() == 3 );
197190static_assert (And3<S, S>() == 3 );
198191static_assert (And3<int >() == 3 ); // expected-error {{no matching function for call to 'And3'}}
199192 // expected-note@#and3 {{candidate template ignored: constraints not satisfied [with T = int, U = <>]}}
200- // expected-note@#and3 {{because 'typename T::type' does not satisfy 'C'}}
201- // expected-note@#C {{because 'T' does not satisfy 'A'}}
193+ // expected-note@#and3 {{because substituted constraint expression is ill-formed: type 'int' cannot be used prior to '::' because it has no members}}
202194
203195
204196static_assert (And3<int , int >() == 3 ); // expected-error {{no matching function for call to 'And3'}}
205197 // expected-note@#and3 {{candidate template ignored: constraints not satisfied [with T = int, U = <int>]}}
206- // expected-note@#and3 {{because 'typename T::type' does not satisfy 'C'}}
207- // expected-note@#C {{because 'T' does not satisfy 'A'}}
198+ // expected-note@#and3 {{because substituted constraint expression is ill-formed: type 'int' cannot be used prior to '::' because it has no members}}
208199
209200
210201static_assert (And3<S, int >() == 3 ); // expected-error {{no matching function for call to 'And3'}}
211202 // expected-note@#and3 {{candidate template ignored: constraints not satisfied [with T = S, U = <int>]}}
212- // expected-note@#and3 {{because 'typename U::type' does not satisfy 'C'}}
213- // expected-note@#C {{because 'T' does not satisfy 'A'}}
203+ // expected-note@#and3 {{because substituted constraint expression is ill-formed: type 'int' cannot be used prior to '::' because it has no members}}
214204
215205
216206static_assert (And3<int , S>() == 3 ); // expected-error {{no matching function for call to 'And3'}}
217207 // expected-note@#and3 {{candidate template ignored: constraints not satisfied [with T = int, U = <S>]}}
218- // expected-note@#and3 {{because 'typename T::type' does not satisfy 'C'}}
219- // expected-note@#C {{because 'T' does not satisfy 'A'}}
208+ // expected-note@#and3 {{because substituted constraint expression is ill-formed: type 'int' cannot be used prior to '::' because it has no members}}
220209
221210
222211static_assert (Or1<>() == 1 ); // expected-error {{no matching function for call to 'Or1'}}
@@ -227,25 +216,22 @@ static_assert(Or1<S, int>() == 1);
227216static_assert (Or1<S, S>() == 1 );
228217static_assert (Or1<int >() == 1 ); // expected-error {{no matching function for call to 'Or1'}}
229218 // expected-note@#or1 {{candidate template ignored: constraints not satisfied}}
230- // expected-note@#or1 {{because 'typename T::type' does not satisfy 'C'}}
231- // expected-note@#C {{because 'T' does not satisfy 'A'}}
219+ // expected-note@#or1 {{because substituted constraint expression is ill-formed: type 'int' cannot be used prior to '::' because it has no members}}
232220
233221static_assert (Or2<S>() == 2 );
234222static_assert (Or2<int , S>() == 2 );
235223static_assert (Or2<S, int >() == 2 );
236224static_assert (Or2<S, S>() == 2 );
237225static_assert (Or2<int >() == 2 ); // expected-error {{no matching function for call to 'Or2'}}
238226 // expected-note@#or2 {{candidate template ignored: constraints not satisfied [with T = int, U = <>]}}
239- // expected-note@#or2 {{because 'typename T::type' does not satisfy 'C'}}
240- // expected-note@#C {{because 'T' does not satisfy 'A'}}
227+ // expected-note@#or2 {{because substituted constraint expression is ill-formed: type 'int' cannot be used prior to '::' because it has no members}}
241228static_assert (Or3<S>() == 3 );
242229static_assert (Or3<int , S>() == 3 );
243230static_assert (Or3<S, int >() == 3 );
244231static_assert (Or3<S, S>() == 3 );
245232static_assert (Or3<int >() == 3 ); // expected-error {{no matching function for call to 'Or3'}}
246233 // expected-note@#or3 {{candidate template ignored: constraints not satisfied}}
247- // expected-note@#or3 {{because 'typename T::type' does not satisfy 'C'}}
248- // expected-note@#C {{because 'T' does not satisfy 'A'}}
234+ // expected-note@#or3 {{because substituted constraint expression is ill-formed: type 'int' cannot be used prior to '::' because it has no members}}
249235}
250236
251237namespace bool_conversion_break {
0 commit comments