efriedma-quic wrote:

ActOnCXXExitDeclInitializer does three things:

- Some scope handling which isn't relevant in this context.
- Does some special handling for variables, to compute whether the variable's 
initializer is manifestly constant-evaluated.
- Calls PopExpressionEvaluationContext

The special handling for variables is specifically relevant for variables... I 
don't see why we'd need it anywhere else? Except, hmm... I guess we need the 
same handling if we're instantiating a template, like:

```
struct B {
  const void* p;
  consteval B() : p{this} {}
};
template<typename T> T x{};
B* y = &x<B>;
```

But I can't think of anything else.

Any suggestions for how to refactor?

https://github.com/llvm/llvm-project/pull/144970
_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to