leanil marked 3 inline comments as done.
leanil added inline comments.

================
Comment at: clang-tidy/misc/ForwardingReferenceOverloadCheck.cpp:31
+               ->getName()
+               .find("enable_if") != StringRef::npos;
+  };
----------------
aaron.ballman wrote:
> This should be using `equals()` rather than `find()` -- otherwise a name like 
> `enable_if_awesome()` would trigger the match. You should also make sure the 
> name is in the `::std` namespace so that you can't trigger it with 
> `foo::enable_if` or `foo::std::enable_if`.
My intention with using `find()` was that if a user has an 
`enable_if_awesome()`, then it seems more likely to be similar to the std 
version, than to have completely different purpose.
And as a bonus `find()` also finds `std::enable_if_t` in one check.


================
Comment at: clang-tidy/misc/ForwardingReferenceOverloadCheck.cpp:125-126
+    }
+    diag(Ctor->getLocation(), "function %0 can hide copy and move 
constructors")
+        << Ctor;
+  }
----------------
aaron.ballman wrote:
> I think a better diagnostic might be: "constructor accepting a universal 
> reference hides the %select{copy|move|both the copy and move}0 
> %select{constructor{|s}1"
> 
> And then provide a note ("%select{copy|move}0 constructor declared here") 
> that points to the offending copy and/or move constructor.
Without checking actual constructor calls, I would have to make notes on every 
(non disabled) copy / move constructor, any time I produce a warning. And as 
the warning already states where the problem lies, the notes would only help 
people find the copy and move constructors. Do you think that's necessary? 


================
Comment at: clang-tidy/misc/MiscTidyModule.cpp:70
+    CheckFactories.registerCheck<ForwardingReferenceOverloadCheck>(
+        "misc-forwarding-reference-overload");
     CheckFactories.registerCheck<MisplacedConstCheck>("misc-misplaced-const");
----------------
aaron.ballman wrote:
> I wonder if the name might be slightly misleading -- I've always understood 
> these to be universal references rather than forwarding references. I don't 
> have the Meyers book in front of me -- what nomenclature does he use?
> 
> Once we pick the name, we should use it consistently in the source code (like 
> the file name for the check and the check name), the documentation, and the 
> release notes.
Meyers calls them universal references, but it's //forwarding reference// in 
the standard (14.8.2.1).


Repository:
  rL LLVM

https://reviews.llvm.org/D30547



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

Reply via email to