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

Casey Carter <Casey at Carter dot net> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|UNCONFIRMED                 |RESOLVED
         Resolution|---                         |INVALID

--- Comment #1 from Casey Carter <Casey at Carter dot net> ---
[temp.constr.atomic]/3 states:

  To determine if an atomic constraint is satisfied, the parameter mapping 
  and template arguments are first substituted into its expression. If
  substitution results in an invalid type or expression, the constraint is
  not satisfied. Otherwise, the lvalue-to-rvalue conversion is performed if
  necessary, and E shall be a constant expression of type bool.

"E shall be a constant expression" clearly indicates that a substitution that
produces a non-constant-expression is ill-formed, rather than causing the
constraint not to be satisfied. This is a defect in the language rather than a
bug in GCC.

Reply via email to