The implementation shall provide a definition that is
derived from 
true_type if the 
qualified-id T::allocator_type
is valid and denotes a type (
[temp.deduct]) and
is_convertible_v<Alloc, T::allocator_type> != false, otherwise it shall be
derived from 
false_type.A program may specialize this template to derive from
true_type for a program-defined type 
T that does not have a nested
allocator_type but nonetheless can be constructed with an allocator where
either:
- the first argument of a constructor has type allocator_arg_t and the
second argument has type Alloc or
- the last argument of a constructor has type Alloc.