The recent refactoring allows us to easily support C++17 "copy-elided" constructor syntax for variables and constructor-initializers. Similar constructors for return values are still to be supported.
In particular, the change of using path-sensitive state traits made our liveness problems go away. The elision_on_ternary_op_branches test was failing without that.
D47350 allowed us to support the C++17 destructor in testCtorInitializer().