For the purposes of determining
whether an expression
E is a core constant expression,
the evaluation of the body of a member function of
std::allocator<T>
as defined in
[allocator.members], where
T is a literal type,
is ignored
. Similarly, the evaluation of the body of
std::construct_at or
std::ranges::construct_at
is considered to include only
the initialization of the
T object
if the first argument (of type
T*) points
to storage allocated with
std::allocator<T> or
to an object whose lifetime began within the evaluation of
E.