https://gcc.gnu.org/bugzilla/show_bug.cgi?id=120554
--- Comment #7 from David Binderman <dcb314 at hotmail dot com> ---
(In reply to Jakub Jelinek from comment #6)
> 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.
A simpler test case is this:
$ more bug1101.cc
struct S {
S();
constexpr S & operator=( const S & ) = default;
};
foundBugs $ ~/gcc/results/bin/g++ -c bug1101.cc
foundBugs $ ~/llvm/results/bin/clang++ -c bug1101.cc
bug1101.cc:4:3: error: defaulted definition of copy assignment operator cannot
be marked constexpr before C++23
4 | constexpr S & operator=( const S & ) = default;
| ^
1 error generated.
foundBugs $
Some compiler disagreement there. Perhaps g++ is already at C++23 ?
> I have no idea which compiler is right here,
Nor do I, but this has drifted from cobol to C++.
Should I write a new bug report ?