BOOST_FOREACHの実装技法

あ,全然関係ないですけれどBOOST_FOREACHの実装技法はかなり難解な部類なものの,分かるとかなり楽しいです.scope guardに見られるような,派生クラスをオブジェクトジェネレータで生成して,生成された一時オブジェクトの寿命を基底クラスのconst参照で延命するという技法が使われています.scope guardの場合,stack unwinding(例外が飛んでスコープを抜ける場合に,スコープを外れたオブジェクトのデストラクタが自動的に呼ばれる動作のこと)でデストラクタが発動されるまで,要するにスコープの終端までその一時オブジェクトを延命すればよいだけですが,FOREACHの場合基底クラスのconst参照で延命しつつ生成した一時オブジェクトの実際の型を関数テンプレートの型推論能力を用いて復元しているように見せかけています.さらにこれを自然な単一のfor文に見せるために,if文の条件文中でboolに変換可能な型が宣言できることを利用してcascadeしまくったif文を用いるという,っていうか説明読むより実装読んだ方が早いです.あと,foreachのzipになぜかこの実装技法を説明したpptファイルが付いてます(笑)のでそれが非常に参考になります.