Hi all,
This is an initial patch submission falling out of Lock3's reflection and metaprogramming work. This is a rather small patch to allow immediate invocation of constructors.
We have additional larger patches for consteval which will likely be a bit trickier, so I wanted to start here to help familiarize myself with the process.
For context, we have forthcoming patches that:
- Provide improvements which allow the cached values of ConstantExpr to be used by both the constant evaluator and code gen
- Update the application of evaluation contexts, using the stronger guarantees of manifest constant evaluation to apply the ConstantEvaluated evaluation context in more places
These are both larger, and while we depend on them in observable ways for our work, these are not currently observable changes from the perspective of the test suite.
It looks like the other callers to BuildCXXConstructExpr are also missing this handling. Can we put the call to CheckForImmediateInvocation in BuildCXXConstructExpr to handle all those cases at once, or do we need to defer it until after the other stuff below?