https://gcc.gnu.org/bugzilla/show_bug.cgi?id=114076
Jiang An <de34 at live dot cn> changed:
What |Removed |Added
----------------------------------------------------------------------------
CC| |de34 at live dot cn
--- Comment #1 from Jiang An <de34 at live dot cn> ---
Looks like a duplicate of Bug 104850 to me.
GCC cares about the difference between direct/copy of initialization, not
whether list-initialization or not (however, it's unfortunately that
direct-non-list-initialization can't be used).
> In case c, the rejection seems to me to be correct, since here the temporary
> value must be destroyed by a destructor call.
I don't see why there's even a temporary value since C++17. The prvalue is used
to initialize the data member (via temporary materialization). The potential
invocation of destructor should be in the body of constructors.