rsmith accepted this revision.
rsmith added a comment.
This revision is now accepted and ready to land.

I think it's almost always true that we don't substitute into a template unless 
we've already substituted into all enclosing templates. The only exception I 
can think of is alias templates, which are substituted early, even in dependent 
contexts. So a case like:

  template<typename T> struct A {
    template<typename U> using B = decltype([](auto){}(U()));
    void f(B<int>);
  };
  A<int> ai;

... might run into some problems here. But I would note we //already// crash on 
that testcase (and GCC miscompiles it, treating `B<int>` as `int` rather than 
`void`). So I suspect that's another whole can of worms.


Repository:
  rG LLVM Github Monorepo

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

https://reviews.llvm.org/D110727

_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
  • [PATCH] D110727: ... Matheus Izvekov via Phabricator via cfe-commits
    • [PATCH] D110... Richard Smith - zygoloid via Phabricator via cfe-commits
    • [PATCH] D110... Matheus Izvekov via Phabricator via cfe-commits

Reply via email to