Unless otherwise specified,
if an exception is thrown in the following algorithms,
objects constructed by a placement new-expression ([expr.new])
are destroyed in an unspecified order
before allowing the exception to propagate.
When new objects are created by
the algorithms specified in [specialized.algorithms],
the lifetime ends for any existing objects
(including potentially-overlapping subobjects [intro.object])
in storage that is reused [basic.life].
Some algorithms specified in [specialized.algorithms]
make use of the exposition-only function template
voidify:
template<class T>constexprvoid*voidify(T& obj)noexcept{return addressof(obj);
}