ここにいくつかの答えがあります(How to loop through a boost::mpl::list?は私が始めたものです)は、boost :: mplにフィードする汎用ラムダを構築できるはずです: :for_each()しかし、私は実際の例を見つけることができないか、自分自身を構築することができません。私はラムダに行うことができるようにしたいものをboost :: mpl :: for_each()でジェネリックラムダを呼び出す
Idealyは、私は現在、
for(int k = 0; k < 2; ++k)
{
TestFunction<int>(k);
TestFunction<long>(k);
TestFunction<float>(k);
TestFunction<double>(k);
};
と交換するようなものでループで呼んでいる
template<typename T>
void TestFunction(const int &p)
{
T t(p);
std::cout << "p = " << p << ", t = " << t << std::endl;
};
のような関数を取ることです
typedef boost::mpl::list<int, long, float, double> ValidTypes;
for(int k = 0; k < 2; ++k)
{
// lambda definition that captures k
// boost::mpl::for_each(ValidTypes, ...) that calls the lambda.
};
これは可能ですか?他のmpl構造のいずれかとfor_each()を使用しない場合は?私は演算子()をオーバーロードするコードを実行していますが、可能であればラムダ・ソリューションを見たいと思います。
ありがとう、 アンディ。
ありがとうございます@TemplateRex! make_identity <>トリックは、私の試みからの欠けているリンクでした! – Andy