要求ポリシーは、使用者から記憶領域の割り当てを要求されたときに、どの程度記憶領域をまとめて割り当てるのかを決定するポリシーである。2相テンプレートと状態を持ち得るポリシークラスを用いて構成する。
フロントエンドのクラス名をpolicy_sample、バックエンド導出のために与えられた記憶領域の個数を表す型をSとすると、バックエンドのクラスは
typenamepolicy_sample::templatebind<S>::type
という記述で得られる。以降、バックエンドのクラス名をbackendと表記する。
backendは次のpublicなメンバ型を持つ。
initializer
backendに対する初期化オブジェクトの型。backendのオブジェクトは初期化オブジェクトを用いて構築できる。
backendは次のprotectedなメンバ関数を持つ。
backend()
引数なしでオブジェクトを構築する。
backend(U init)
初期化オブジェクトinitを用いてオブジェクトを構築する。引数の型Uはinitializerもしくはconst initializer&のどちらかである。
backend(const backend& rhs)
同型のオブジェクトrhsを用いてオブジェクトを構築する。
~backend()
オブジェクトを破壊する。
backend& operator=(const backend&)
存在しない。
void swap(backend& rhs)
自身とrhsの状態を入れ換える。
initializer get_initializer() const
初期化オブジェクトを返す。
S to_be_acquired(S x) const
現在既に蓄積されている記憶領域数がxで、使用者が1つの記憶領域を要求しているとき、記憶領域を新たにいくつ補充するべきかを返す。
定義済みの要求ポリシーは次の通り。すべて名前空間bezel::scalar_allocation_policy::pool_acquisition_policyに定義されている。
pool_acquisition_policy::ondemand
余分な割り当てを行わない。使用者からの割り当て要求があり、蓄積がないときのみ、1つの記憶領域を割り当てる。
pool_acquisition_policy::static_constant
一定の個数をまとめて割り当てる。使用者からの割り当て要求があり、蓄積がないときのみ、n個の記憶領域を割り当てる。割り当てのための定数nは、フロントエンドの第1テンプレートパラメータに静的な定数として与える。
pool_acquisition_policy::dynamic_constant
一定の個数をまとめて割り当てる。使用者からの割り当て要求があり、蓄積がないときのみ、n個の記憶領域を割り当てる。割り当てのための定数nは、メンバ関数set_acquisition_sizeまたは初期化オブジェクトで指定する。
pool_acquisition_policy::default_selected
pool_acquisition_policy::ondemandの別名。デフォルトで選択される。