diff --git a/clang/www/compatibility.html b/clang/www/compatibility.html index 783758f3ac80..2102ccca7e1d 100644 --- a/clang/www/compatibility.html +++ b/clang/www/compatibility.html @@ -60,6 +60,12 @@
Clang diagnoses this error (where the parameter name has been redeclared). To fix this problem, rename one of the parameters.
-In C++11, the explicit declaration of a move constructor or a move +assignment operator within a class disables the implicit declaration +of the copy constructor and copy assignment operator. This change came +fairly late in the C++11 standardization process, so early +implementations of C++11 (including Clang before 3.0, GCC before 4.7, +and Visual Studio 2010) do not implement this rule, leading them to +accept this ill-formed code:
+ ++struct X { + X(X&&); // suppresses implicit copy constructor +}; + +void f(X x); +void g(X x) { + f(x); // error: X has no copy constructor +} ++ +
This affects some C++11 code, including Boost's popular shared_ptr +up to version 1.47.0. The fix for Boost's shared_ptr is +available here.
+ + +