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

Reply via email to