41 lines · cpp
1// RUN: %clang_cc1 -fsyntax-only -verify -std=c++20 %s2 3template<class T>4concept C = true;5 6template<class T>7concept D = C<T> && true;8 9template<typename T>10struct a {11 void no_candidate() requires(false) {}12 // expected-note@-1 {{candidate function not viable: constraints not satisfied}} \13 // expected-note@-1 {{because 'false' evaluated to false}}14 void no_candidate() requires(false && false) {}15 // expected-note@-1 {{candidate function not viable: constraints not satisfied}} \16 // expected-note@-1 {{because 'false' evaluated to false}}17 18 void subsumes();19 void subsumes() requires C<T>;20 void subsumes() requires D<T> {};21 22 void ok() requires false;23 void ok() requires true {};24 25 void ok2() requires false;26 void ok2(){};27 28 void ambiguous() requires true;29 // expected-note@-1 {{candidate function}}30 void ambiguous() requires C<T>;31 // expected-note@-1 {{candidate function}}32};33template void a<int>::no_candidate();34// expected-error@-1 {{no viable candidate for explicit instantiation of 'no_candidate'}}35 36template void a<int>::ambiguous();37// expected-error@-1 {{partial ordering for explicit instantiation of 'ambiguous' is ambiguous}}38 39template void a<int>::ok();40template void a<int>::ok2();41