https://gcc.gnu.org/bugzilla/show_bug.cgi?id=118066
Bug ID: 118066 Summary: Diagnostic for variadic concept with fold expression on other concepts is unhelpful Product: gcc Version: 14.2.1 Status: UNCONFIRMED Severity: normal Priority: P3 Component: c++ Assignee: unassigned at gcc dot gnu.org Reporter: sergey at murzin dot pw Target Milestone: --- When we define a variadic concept using another concept as implementation with a fold expression as shown below: ``` template<typename T> concept FalsyConcept = requires { requires sizeof(T) > 4; }; template<typename... Ts> concept VariadicConcept = (FalsyConcept<Ts> && ...); static_assert(VariadicConcept<double, int>); ``` The resulting diagnostic is: <source>:5:45: note: the expression '(FalsyConcept<Ts> && ...) [with Ts = {int, double}]' evaluated to 'false' 5 | concept VariadicConcept = (FalsyConcept<Ts> && ...); Which is not very helpful given that only some of the concept checks failed, making it unclear which exact check failed. CE link https://compiler-explorer.com/z/xxfhTzn36