bezel/array_construction_policy/pod_zerofilled.hbezel::array_construction_policy::pod_zerofilled
array_construction_policy::pod_zerofilledは、POD型に対する構築と破壊を一部省略することで処理を高速化する、配列構築ポリシーのためのプロキシポリシーである。フロントエンドのテンプレートパラメータに下位の構築ポリシーを指定する。省略するとarray_construction_policy::std_memoryが選択される。
POD型に対する構築と破壊は次のように行われる。
void construct(void* p)
pが示す記憶領域上に対象型のデフォルト値をコピーする。
void construct(void* p, const_reference v)
pが示す記憶領域上に値vをコピーする。
void destruct(pointer p)
何もしない。
pointer construct(void* p, size_type n, array_marker_t)
記憶領域をゼロクリアする。
pointer construct(void* p, size_type n, const_reference v)
と等価な処理を行う。
std::uninitialized_fill_n(static_cast<pointer>(p), n, v)
template <typename In> pointer construct(void* p, In first, In last)
Inが対象型を指すポインタ型であれば、[first, last)が示す記憶領域からpが示す記憶領域へとbitwise copyで値をコピーする。
Inが対象型を指すポインタ型でなければ、と等価な処理を行う。
std::uninitialized_copy(first, last, static_cast<pointer>(p))
void destruct(pointer first, pointer last)
何もしない。
対象型がPOD型でない場合は、すべての処理を下位の構築ポリシーに行わせる。
このポリシーを用いるには、TR1またはBoostで定義されているtype_traitsが必要である。項2.1. 「必要なツールとパッケージ」を参照のこと。