6.4.2. 要件

配列構築ポリシーの実装が満たすべき要件について述べる。

ポリシーは、2相テンプレートと状態を持ち得るポリシークラスで構成される。フロントエンドのクラス名をpolicy_sample、バックエンド導出のために与えられた操作対象の型をT、型Tの連続領域の大きさを表す型をSとすると、バックエンドのクラスは

typename policy_sample::template bind<T, S>::type

という記述で得られる。以降、バックエンドのクラス名をbackendと表記する。

backendは次のpublicなメンバ型を持つ。

backendは次のprotectedなメンバ関数を持つ。

ポリシークラスが通常満たすべき例外安全性と計算量の条件は次の通り。

表 6.4. 配列構築ポリシーの例外安全性と計算量

操作例外安全性計算量
すべてのコンストラクタstrong定数
デストラクタnothrow定数
swapnothrow定数
construct(p), construct(p, t)strong定数
destruct(p)nothrow定数
construct(p, n, marker), construct(p, n, t)strongnに対して線形
construct(p, i, j)strongdistance(i, j)に対して線形
destruct(q1, q2)nothrowdistance(q1, q2)に対して線形