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

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

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

--- Comment #6 from Jakub Jelinek <jakub at gcc dot gnu.org> ---
This boils down to
struct S {
  unsigned int s;
  S () : s (0) {}
  constexpr S &operator= (const S &) = default;
};
i.e. when the default ctor is not constexpr, but defaulted assignment operator
is constexpr.
I have no idea which compiler is right here, though admittedly what libgcobol
does makes no sense to me, if no constructor is marked constexpr, one can't
construct objects of such type during constant expression evaluation and so it
is either wrong
or just useless to mark the copy assignment operator constexpr.
Note, adding any other constexpr ctor to the structure makes it accepted by
clang,
e.g.
  constexpr S (int, int, int) : s (42) {}

Reply via email to