6.2.2. 要件

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

ポリシーは、2相テンプレートと状態を持ち得るポリシークラスで構成される。フロントエンドのクラス名をpolicy_sample、バックエンド導出のために与えられた操作対象の型をT、そのサイズをN(= sizeof(T))とすると、バックエンドのクラスは

typename policy_sample::template bind<N>::type

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

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

backendは次のprotectedなメンバ関数を持つ。以下の記述では非静的メンバ関数での実装を仮定しているが、可能であれば静的メンバ関数で実装しても構わない。

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

表 6.2. 配列割り当てポリシーの例外安全性と計算量

操作例外安全性計算量
すべてのコンストラクタstrong定数
デストラクタnothrow定数
swapnothrow定数
get_initializerstrong定数
allocate(n)strongnに対して線形
deallocate(p)nothrowpで示される記憶領域の大きさに対して線形
max_sizenothrow定数