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

Jakub Jelinek <jakub at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |jakub at gcc dot gnu.org

--- Comment #6 from Jakub Jelinek <jakub at gcc dot gnu.org> ---
This is because with -fconcepts-ts the requires-clause argument is parsed as
logical-or-expression rather than constraint-logical-or-expression and for the
former the [ could be part of postfix-expression in there.  Bet that is the
reason why constraint-logical-or-expression exists and allows only
primary-expressions mixed with ||s and &&s.
Perhaps the FE could have a hack, set some parser flag when parsing
requires-clause and in postfix-expression parsing if that flag is set instead
of the [[ error in there pretend [ is not there and ends the expression.

As a workaround,
template <class T>
  requires true
void f [[deprecated]] (T);
works.

Reply via email to