If uses_allocator<container_type, Alloc>::value is false the constructors in this subclause shall not participate in overload resolution.
template <class Alloc>
explicit stack(const Alloc& a);
Effects: Initializes c with a.
template <class Alloc>
stack(const container_type& cont, const Alloc& a);
Effects: Initializes c with cont as the first argument and a as the second argument.
template <class Alloc>
stack(container_type&& cont, const Alloc& a);
Effects: Initializes c with std::move(cont) as the first argument and a as the second argument.
template <class Alloc>
stack(const stack& s, const Alloc& a);
Effects: Initializes c with s.c as the first argument and a as the second argument.
template <class Alloc>
stack(stack&& s, const Alloc& a);
Effects: Initializes c with std::move(s.c) as the first argument and a as the second argument.