This paper proposes that objects of sufficiently trivial types be created on-demand as necessary within newly-allocated storage to give programs defined behavior.
An explicit syntactic marker is required to indicate that objects should be created. Existing obvious markers, such as the use of
Expand set of implicit-lifetime types to require either a trivial default constructor or a trivial copy/move constructor, rather than requiring both.
Types with only a trivial default constructor may be suitable for member-by-member construction via class member access, even if the copy or move constructor is non-trivial.
Types with only a trivial copy/move constructor may be suitable for initialization by copying (for example) an on-disk representation into memory, even if the default constructor is non-trivial.
Removed untyped version of