aaron.ballman added subscribers: dblaikie, rsmith.

================
Comment at: clang-tidy/misc/UserDefinedCopyWithoutAssignmentCheck.cpp:51
@@ +50,3 @@
+
+  Diag << FixItHint::CreateInsertion(CCtorEnd, Insertion.str());
+}
----------------
alexfh wrote:
> aaron.ballman wrote:
> > We probably do not want to generate this fixit unless we are compiling for 
> > at least C++11. We should have a test for C++98.
> Just insert this at the start of `registerMatchers`:
> 
>   if (!getLangOpts().CPlusPlus11)
>     return;
I think the check is still useful in C++98 mode assuming older versions of MSVC 
(before they started supporting C++11) have the same behavior. The fixit isn't 
useful, but warning the user about the problem is.

================
Comment at: 
docs/clang-tidy/checks/misc-user-defined-copy-without-assignment.rst:6
@@ +5,3 @@
+
+MSVC 2015 will generate an assignment operator even if the user defines a copy 
constructor.
+This check finds classes with a user-defined (including deleted)
----------------
alexfh wrote:
> Is this problem only relevant to MSVC 2015? Is MSVC's behavior 
> standard-compliant in this case?
MSVC's behavior is standards compliant, but is deprecated behavior. 
[class.copy]p18:

"If the class definition does not explicitly declare a copy assignment 
operator, one is declared implicitly. If
the class definition declares a move constructor or move assignment operator, 
the implicitly declared copy
assignment operator is defined as deleted; otherwise, it is defined as 
defaulted (8.4). The latter case is
deprecated if the class has a user-declared copy constructor or a user-declared 
destructor."

Now that I think about it more, I thought @dblaikie or @rsmith made a check for 
this once under -Wdeprecated. It looks like Richard did in r183884.


Repository:
  rL LLVM

http://reviews.llvm.org/D16376



_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to