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

--- Comment #7 from Jonathan Wakely <redi at gcc dot gnu.org> ---
(In reply to Jonathan Wakely from comment #2)
> Reduced:
> 
> template<typename> constexpr bool is_void_v = false;
> template<> constexpr bool is_void_v<void> = true;
> template<typename T> concept is_void = is_void_v<T>;
> 
> template<typename T> concept D = true;
> template<typename T> concept C = D<T&>;

Patrick says:

however, your reduced testcase should be valid because the concept D doesn't
use its template parameter so we shouldn't have to substitute T=void into T&
when normalizing D<T&>
if D is defined to use its template parameter concept D = typename { T; } then
it's invalid and that's where Bug 96821 comes in

Reply via email to