hokein marked an inline comment as done.
hokein added inline comments.

================
Comment at: clang/test/SemaCXX/invalid-template-base-specifier.cpp:6
+template <typename T>
+struct Crash : decltype(Foo(T())) { // expected-error {{no matching function 
for call to 'Foo'}}
+  Crash(){};
----------------
to explain what's happening here:

- when parsing this primary template class decl, we'll keep this base specifier 
(whose type is a normal dependent type, `DecltypeType 'decltype(Foo(T()))' 
dependent`)
- later clang instantiates `Crash<int>` (creating a 
ClassTemplateSpecializationDecl), which will subst the base specifier with an 
instantiated base specifier (the type is `DecltypeType 
decltype(<recovery-expr>(Foo, int()))` ), and the instantiated specifier is 
passed the sanity checks (`CheckBaseSpecifier`), and gets attached to the 
ClassTemplateSpecializationDecl.



Repository:
  rG LLVM Github Monorepo

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

https://reviews.llvm.org/D82086



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

Reply via email to