bezel/scalar_construction_policy::strictly_checked.hbezel::scalar_construction_policy::strictly_checked
scalar_construction_policy::strictly_checkedは、オブジェクトの構築と破壊を実行時にチェックする、スカラー構築ポリシーのためのプロキシポリシーである。フロントエンドの第1テンプレートパラメータに下位の構築ポリシーを指定する。各操作に要する計算量が大きいため、デバッグ目的での使用が想定されている。
第2テンプレートパラメータには、エラー検出時のエラー報告ポリシーを指定する。デフォルトではerror_reporting_policy::std_abortが選択される。
第3テンプレートパラメータには、後述のクラス変数のコンテナへのアクセスを排他制御するためのスレッド制御ポリシーを指定する。デフォルトではthreading_policy::singleが選択される。
第4テンプレートパラメータには、内部で使用する列コンテナを指定する。コンテナは2相テンプレート構成である必要がある。デフォルトではlist::basic_listが選択される。
constructおよびdestructは、すべて下位の構築ポリシーによって行われる。
constructで構築されたオブジェクトの情報は、destructで破壊されるときまでポリシークラス内のクラス変数に保持される。破壊するときは、引数が正しいかどうかが照合される。構築されていないオブジェクトや破壊済みのオブジェクトを破壊しようとする操作、構築されたオブジェクトが残されたままポリシーオブジェクトを破壊しようとする操作、あるいは下位の構築ポリシーの戻り値の異常などは、エラーとして検出される。
構築済みのオブジェクト数をnとすると、constructとdestructの計算量はnに対する線形時間である。
なお、配列構築ポリシーには実装済みのチェック付きポリシーはない。替わりに、scalar_construction_policy::strictly_checkedとarray_construction_policy::scalar_wrapperを組み合わせて用いること。