[PATCH] D16376: clang-tidy check: rule-of-five

Jonathan Coe via cfe-commits cfe-commits at lists.llvm.org
Wed Feb 3 10:23:45 PST 2016


All the C++ compilers I have tried using (GCC,Clang,MSVC) will generate
assignment operators even if the user defines a copy-constructor. This is
the behaviour I set out to write a check for.

The cpp core guide lines recommend defining all or none of the special
functions
https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md#c21-if-you-define-or-delete-any-default-operation-define-or-delete-them-all

If the deprecation warning you mention will turn off the deprecated
generation of special member functions when others are defined (or warn
when deprecated compiler-generated functions are used) then the
rule-of-five check is of reduced value.

Jon

On 3 February 2016 at 17:40, David Blaikie <dblaikie at gmail.com> wrote:

> Is this really that useful of a rule? The language does the right thing
> for the most part already (you don't need to explicitly delete them -
> they're implicitly deleted if you define any others - except for backcompat
> with C++98, but those cases are deprecated & we should probably split out
> the warning for that deprecation so it's easier to turn on separately)
>
> On Wed, Feb 3, 2016 at 5:25 AM, Jonathan B Coe via cfe-commits <
> cfe-commits at lists.llvm.org> wrote:
>
>> jbcoe retitled this revision from "clang-tidy check: Assignment and
>> Construction" to "clang-tidy check: rule-of-five".
>> jbcoe removed rL LLVM as the repository for this revision.
>> jbcoe updated this revision to Diff 46775.
>> jbcoe added a comment.
>>
>> I've responded to review comments (thanks for those) and renamed the
>> check to 'rule-of-five'.
>>
>> I think it needs moving to cppcoreguidelines and needs destructor
>> handling adding to it. As suggested, I'll address that in a later patch if
>> everything else looks ok.
>>
>>
>> http://reviews.llvm.org/D16376
>>
>> Files:
>>   clang-tidy/misc/CMakeLists.txt
>>   clang-tidy/misc/MiscTidyModule.cpp
>>   clang-tidy/misc/RuleOfFiveCheck.cpp
>>   clang-tidy/misc/RuleOfFiveCheck.h
>>   docs/clang-tidy/checks/list.rst
>>   docs/clang-tidy/checks/misc-rule-of-five.rst
>>   test/clang-tidy/misc-rule-of-five.cpp
>>
>>
>> _______________________________________________
>> cfe-commits mailing list
>> cfe-commits at lists.llvm.org
>> http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
>>
>>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20160203/1d2994bb/attachment.html>


More information about the cfe-commits mailing list