https://gcc.gnu.org/bugzilla/show_bug.cgi?id=109763

--- Comment #9 from Jason Liam <jlame646 at gmail dot com> ---
(In reply to Andrew Pinski from comment #8)
> Gcc correctly accepts this:
> template <int t> constexpr bool d = true;
> template < typename T >
> concept test = d<T::value>;
> 
> Without a typename as T::value here refers to a value for the non-type
> template argument.

I see. 

-------------------------------

Anyways, for my original example, [temp.constr.normal]:

> The normal form of a concept-id C<A1, A2, ..., An> is the normal form of the 
> constraint-expression
of C, after substituting A1, A2, ..., An for C’s respective template parameters
in the parameter
mappings in each atomic constraint. If any such substitution results in an
invalid type or expression,
the program is ill-formed; no diagnostic is required.

Reply via email to