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

Reply via email to