// RUN: %clang_cc1 -fsyntax-only -verify -std=c++20 %s template concept C = true; template concept D = C && true; template struct a { void no_candidate() requires(false) {} // expected-note@-1 {{candidate function not viable: constraints not satisfied}} \ // expected-note@-1 {{because 'false' evaluated to false}} void no_candidate() requires(false && false) {} // expected-note@-1 {{candidate function not viable: constraints not satisfied}} \ // expected-note@-1 {{because 'false' evaluated to false}} void subsumes(); void subsumes() requires C; void subsumes() requires D {}; void ok() requires false; void ok() requires true {}; void ok2() requires false; void ok2(){}; void ambiguous() requires true; // expected-note@-1 {{candidate function}} void ambiguous() requires C; // expected-note@-1 {{candidate function}} }; template void a::no_candidate(); // expected-error@-1 {{no viable candidate for explicit instantiation of 'no_candidate'}} template void a::ambiguous(); // expected-error@-1 {{partial ordering for explicit instantiation of 'ambiguous' is ambiguous}} template void a::ok(); template void a::ok2();