以下のコードのように、任意のアロケータを使用して割り当てられたプリミティブ型の配列に対してallocator.construct()を呼び出す必要がありますか?このクラスでは、割り当てられたメモリを特定の値に初期化する必要はないので、新たに割り当てられたメモリチャンクを持つallocator.construct()を呼び出す必要はありません。配列が常にプリミティブ型で構成されている場合、このメソッドを呼び出さないと危険ですか?C++プリミティブの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_); }
};
コードを記述しようとするのではなく、簡単な説明用コードを簡単に投稿する方が簡単です。 –
ポストにコードサンプルを追加しました。 –