bezel/scalar_allocation_policy/strictly_checked.hbezel::scalar_allocation_policy::strictly_checked
scalar_allocation_policy::strictly_checkedは、領域の確保と開放を実行時にチェックする、スカラー割り当てポリシーのためのプロキシポリシーである。フロントエンドの第1テンプレートパラメータに下位の割り当てポリシーを指定する。各操作に要する計算量が大きく、スカラー割り当てポリシーの要件を満たさないため、デバッグ目的での使用が想定されている。
第2テンプレートパラメータには、エラー検出時のエラー報告ポリシーを指定する。デフォルトではerror_reporting_policy::std_abortが選択される。
第3テンプレートパラメータには、内部で使用する列コンテナを指定する。コンテナはbezel::list::basic_listと同様の2相テンプレート構成であり、かつバックエンドがstd::listやbezel::listと同様のspliceを備えている必要がある。デフォルトではbezel::list::basic_listが選択される。
allocate、deallocateおよびmoveは、すべて下位の割り当てポリシーによって行われる。
allocateで割り当てられた領域の情報は、deallocateで開放されるとき、あるいはmoveで移動されるときまでポリシーオブジェクト内に保持される。開放または移動するときは、引数が正しいかどうかが照合される。確保されていない領域や開放済みの領域を開放または移動しようとする操作、確保された領域が残されたままポリシーオブジェクトを破壊しようとする操作、あるいは下位の割り当てポリシーの戻り値の異常などは、エラーとして検出される。
割り当て済みの領域数をnとすると、allocateとdeallocateに要する計算量はnに対する線形時間である。無引数のmoveに対する計算量は定数時間、単一領域のmoveに対する計算量はnに対する線形時間、複数領域のmoveに対する計算量は指定された領域の数とnの積に比例する時間である。