carlosgalvezp added a comment.

In D144217#4143554 <https://reviews.llvm.org/D144217#4143554>, @PiotrZSL wrote:

> In D144217#4143540 <https://reviews.llvm.org/D144217#4143540>, @carlosgalvezp 
> wrote:
>
>>> Perhaps, this can even be generalized to all types whose size() and empty() 
>>> are constexpr.
>
> Problem is that you can mark function constexpr, but it doesnt need to be 
> constexpr evaluated:
>
>   struct C
>   {
>       constexpr C(int v) : v(v) {}
>       constexpr int size() const { return v; };
>       constexpr bool empty() const { return v == 0; };
>       constexpr void setSize(int vv) { v = vv; };
>       int v;
>   };
>   
>   constexpr C value(6);
>   C non_const(6);
>
> I would need to check if it's constexpr evaluated, but here we don't evaluate 
> it. Alternative would be to check if method use only template arguments, but 
> then it could use other const static or something...
> This is why I decided to go with config. And still you may have other user 
> provided classes that does not have empty/size constexpr.

Ok, good point!



================
Comment at: 
clang-tools-extra/clang-tidy/readability/ContainerSizeEmptyCheck.cpp:101
+      IgnoreComparisonForTypesRegexp(
+          Options.get("IgnoreComparisonForTypesRegexp", "^::std::array")) {}
+
----------------
I also realize that in other checks, this is typically implemented as a list 
(comma or semicolon-separated) instead of a regex. Would it make sense to do 
that here as well, for consistency? As a user I would also find it easier and 
more intuitive to type a list than to have to google how to create a list using 
regex :) 


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D144217/new/

https://reviews.llvm.org/D144217

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

Reply via email to