- object with automatic storage duration;
- a temporary prvalue object destroyed at the end of the current full-expression.
This would be useful for implementing compile-time checking of types that can (or should) be valid only when their lifetime is strictly bounded by the current context (scope), for example:
- capability/token objects;
- objects used to ensure transaction idempotency;
- any RAII-managed resources that must not outlive the local context;
- types for which it is important to impose a compile-time lifetime restriction with predictable destruction at the end of the current scope, such as `std::scoped_lock`.