On Nov 5, 2020, at 6:34 AM, Pavel Černohorský via cfe-users <cfe-users@lists.llvm.org> wrote: > > Hello, > > I would like to ask what is wrong with the following code: > ``` > > #include <optional> > > struct S > { > S& operator=(S&) { return *this; }; > }; > > void thisWillNotCompileInClang() > { > std::optional<S> a; > } > > ``` > > Compilation command is `g++ or clang++ -std=c++17 -c source.cpp`. It compiles > without problems with g++ 9.3.0, but not with clang++ 10.0.0 (both from > current stable Ubuntu 20). This code is simplification of code using widely > adopted rapidjson library which uses assignment operator with non-const > parameter a lot. Earlier versions of clang did not complain (tried with 7.0.1 > on currently stable Debian Buster).
A note from the libstdc++ maintainer: > I think there was a core change in C++20 to make the =default do the right > thing (which is delete it, I think). > Clang does compile it with -std=c++20 just not -std=c++17. — Marshall _______________________________________________ cfe-users mailing list cfe-users@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-users