Does it make sense to use std::uninitialized_fill() with any allocator?
<p>Does it make sense to initialize memory with <code>std::uninitialized_fill()</code> in a library when an allocator passed as argument by the user has been used to get the memory itself? I ask this because an allocator is supposed to have provide its own <code>construct()</code> method (other than the <code>allocate()</code> method), the implementation of which might differ from the standard one, so probably <code>std::uninitialized_fill()</code> is not always appropriate in all the cases.</p>

<p>To be precise, my doubts come from the C++ book written by Stroustrup (appendix E "Standard-Library Exception Safety", section E. 3.1), in which the author gives a possible implementation of a <code>template&lt;class T, class A&gt; vector&lt;T,A&gt;::vector(size_type n, const T&amp; val, const A&amp; a)</code>: the allocator a is used to get the memory for the vector, then <code>std::uninitialized_fill()</code> is used to initialize the obtained memory.</p>

<p>He also gives the implementation of <code>std::uninitialized_fill()</code>, which internally uses the standard placement new to initialize the  the memory, but there is no longer evidence of the <code>construct()</code> method of the allocator passed as argument to the vector constructor.</p>
