What purpose do C++23's type-identity alloc copy/move constructors serve in std::vector?

9 hours ago 1
ARTICLE AD BOX

I think I understand the purpose of std::type_identity_t, that it's supposed to help in the scenario where type deduction of a template does not require all template arguments to determine the template type parameters. This makes sense for the simple example given (such as math functions with double and int passed in).
But what I don't understand is why does C++23 introduce this to the allocator parameter move/copy constructors for std::vector?

for example:

constexpr vector( const vector& other, const std::type_identity_t<Allocator>& alloc ); constexpr vector( vector&& other, const std::type_identity_t<Allocator>& alloc );

I don't see it as analogous to something like

template<typename T> void foo(T x, T y); foo(1.0, 0);

In what case would the equivalent situation happen in the std::vector constructors?

Read Entire Article