Необходимо ли мне вызывать allocator.construct () для массива примитивных типов, выделенных с использованием произвольного распределителя, как в листинге кода ниже? Класс не требует, чтобы выделенная память была инициализирована каким-либо конкретным значением, поэтому мне кажется, что вызов allocator.construct () с недавно выделенным фрагментом памяти был бы ненужным. Есть ли опасность не вызывать этот метод, учитывая, что массив всегда состоит из примитивных типов?
template <class T, template <class> class Allocator = std::allocator>
class foo
{
public:
typedef Allocator<T> allocator;
typedef typename allocator::pointer pointer;
private:
unsigned size_;
allocator alloc_;
pointer t_;
public:
foo(unsigned n) throw(std::bad_alloc) : size_(n), alloc_(),
t_(alloc_.allocate(n))
{
// Note that I do not call alloc_.construct() here.
}
~foo() { alloc_.deallocate(t_, size_); }
};