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

Reply via email to