6.1.2. 要件

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

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

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

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

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

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

backendは次のprotectedなメンバ関数を任意で持っ てよい。

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

表 6.1. スカラー割り当てポリシーの例外安全性と計算量

操作例外安全性計算量
すべてのコンストラクタstrong定数
デストラクタnothrow定数
swapnothrow定数
get_initializerstrong定数
allocatestrong償却定数
deallocatenothrow償却定数
max_numbernothrow定数
move(from)nothrow定数
move(from, p)nothrow定数
move(from, b, e)nothrow定数



[7] basic(基本例外保証)、strong(強い例外保証)またはnothrow(例外不送出保証)のいずれか

[8] 正確には時間計算量である。本文書では、特に明記しない限り計算量という表記は時間計算量のことを表す