Quuxplusone added inline comments.
================
Comment at: lib/Sema/SemaTemplate.cpp:3061
+#define TYPE_TRAIT_N(Spelling, Name, Key) RecordName == (#Spelling + 2) ||
+#include "clang/Basic/TokenKinds.def"
+#undef TYPE_TRAIT_1
----------------
Why do you bother to check a whitelist of "known" type trait names? It seems to
me that if you replaced this function body with `return true;`, the diagnostic
would automatically be able to handle cases such as
static_assert(std::is_trivially_move_constructible<T>::value); // not a
builtin
static_assert(folly::IsRelocatable<T>::value); // not in namespace std
What would go wrong if you replaced this entire function body with `return
true;`?
================
Comment at: lib/Sema/SemaTemplate.cpp:3109
+ // This might be `std::some_type_trait<U,V>::value`.
+ if (Var && Var->isStaticDataMember() && Var->getName() == "value" &&
+ prettyPrintTypeTrait(DR->getQualifier(), OS, PrintPolicy)) {
----------------
Again, why do you bother to check this? I would not expect the compiler to
treat differently
struct Trait { static constexpr bool value = true; };
static_assert(Trait::value);
struct Trait { static constexpr bool wodget = true; };
static_assert(Trait::wodget);
Repository:
rC Clang
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D54903/new/
https://reviews.llvm.org/D54903
_______________________________________________
cfe-commits mailing list
[email protected]
http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits