// RUN: %clang_cc1 -std=c++2a -x c++ -verify %s template struct X { using Y = typename T::invalid; }; template concept Invalid = X{}; template concept False = false; // expected-note{{because 'false' evaluated to false}} template concept True = true; // TODO: Concepts: Uncomment trailing requires clauses here when we have correct substitution. //template // requires False //void g1() requires Invalid; // //using g1i = decltype(g1()); template // expected-note{{because 'int' does not satisfy 'False'}} requires Invalid void g2(); // requires Invalid; // expected-note@-1{{candidate template ignored: constraints not satisfied [with T = int]}} using g2i = decltype(g2()); // expected-error@-1{{no matching function for call to 'g2'}}