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