Boost.Fusion
使い道があるのか分かりませんが… 大胆な実装 同じ型に変換しないと使えない rectangle r; triangle t; circle c; boost::tuple<rectangle*, triangle*, circle*> tup(&r, &t, &c); BOOST_FOREACH (shape *s, oven::hetero<shape *>(tup)) { s->draw(); }</shape></rectangle*,>
Boost.Parameterは使うのが恐ろしいので、それに近いことをするhigher-order関数 named (実装とサンプル) 名前無しと名前付きを混ぜられない Boost.Fusionが必要
tupleの場合はできます "推論"に、使用する関数の仮引数の型を使える場合もあります (auto_element) []#include[] []<set>[]</set>
Boost.Spiritに含まれ、Boost.TupleをFusion Sequenceとしてコンセプト化し、置きかえるもの MPL SequenceはFusion Sequenceの要件を満たす MPLは型を操作し、Fusionはオブジェクトを操作する 「fusion」とはコンパイルタイムとランタイムのプログラミングの…