component_iteratorの続き。
とりあえずはstatic_castでComponent&にキャストすれば、
BOOST_FOREACH(Component p,static_cast<Component&>(any_component)) {}
で回せるようになっている。
しかし、本当は「Componentを継承している任意のクラスは、component_iteratorを使って子Componentを列挙できる」ようにしたいのだ。
BOOST_FOREACH(Component p,any_component) {}
こうしたいのだが、できない。
なんとなくは、range_iteratorの特殊化において、Componentの継承クラスのみcomponent_iteratorを返すようにできればよいというところまではわかるのだが、私のpoorなテンプレートメタプログラミング知識ではうまくいかないのだ。
かなりの勉強が必要だ。