Quuxplusone added inline comments.

================
Comment at: lib/Sema/SemaTemplate.cpp:3064
+    // If this is a qualified name, expand the template arguments in nested
+    // qualifiers.
+    DR->getQualifier()->print(OS, PrintPolicy, true);
----------------
I don't understand this code enough to say whether this "qualified name" 
business is needed. Is this what currently prevents you from expanding e.g. 
`is_base_of_v<T, U>`, as opposed to `is_base_of<T, U>::value`? What would go 
wrong if you removed //this// condition?


================
Comment at: test/SemaCXX/static-assert.cpp:123
+void foo() {
+  static_assert(std::is_same<RAI_tag, typename 
Container::iterator::tag>::value, "message"); // expected-error{{static_assert 
failed due to requirement 'std::is_same<RAI_tag, BI_tag>::value' "message"}}
+}
----------------
Incidentally, you can put `// expected-error@-1{{...}}` on the following line, 
to avoid such long lines.


================
Comment at: test/SemaCXX/static-assert.cpp:141
+}
+template void foo2<int, float, 3>(); // expected-note {{in instantiation of 
function template specialization 'foo2<int, float, 3>' requested here}}
----------------
Nice!
I would also like to see at least one test where one or more of the types are 
hard-to-name; e.g.
```
template<class T>
void foo(T t) {
    static_assert(std::is_integral<T>::value);
    static_assert(std::is_integral<decltype(t)>::value);
}
void test() { foo([](){}); }
```
Another interesting case would be where one of the types is non-existent — 
which I //expect// would not hit your codepath at all, right?
```
template<class T>
void foo(T t) {
    static_assert(std::is_integral<typename T::iterator>::value);
    static_assert(std::is_integral<decltype(*t)>::value);
}
void test() { foo(42); }
```
And should there be any test for a `static_assert` with no "message" element? 
or are you confident that that'll just work, and you want to keep this test 
file building in C++11 mode?


Repository:
  rC Clang

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

https://reviews.llvm.org/D54903



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

Reply via email to