Why is an allocator allowed to override the ctors and dtors of its value_type?
<p>As far as I know, containers are supposed to use <code>std::allocator_traits&lt;Alloc&gt;::construct</code> and <code>std::allocator_traits&lt;Alloc&gt;::destroy</code> which are either <code>Alloc::construct</code> and <code>Alloc::destroy</code> respectively or <code>value_type::value_type</code> and <code>value_type::~value_type</code> (the defaults).</p>

<p>Why allow an allocator to override the default ctor and dtor of its <code>value_type</code>? When is it useful?</p>