https://gcc.gnu.org/bugzilla/show_bug.cgi?id=123112
Patrick Palka <ppalka at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
CC| |ppalka at gcc dot gnu.org
--- Comment #1 from Patrick Palka <ppalka at gcc dot gnu.org> ---
My understanding is that this is a pitfall of concept-id normalization when
some of the arguments are non-dependent.
We compute the entire normal form of foo's associated constraints
RepresentationOf<T, quantity_character::real_scalar>
eagerly, which recursively requires computing the normal form of
IsOfCharacter<T, V.character>
which requires substituting V = quantity_character::real_scalar into
V.character. This substitution fails which is a hard error:
https://eel.is/c++draft/temp.constr.normal#1.4.2.sentence-2
Note that the example also fails on Clang trunk (which recently corrected their
concepts implementation to perform satisfaction in terms of the normalized
constraints): https://godbolt.org/z/6vv9Kb4qd