【发布时间】:2017-10-27 13:25:24
【问题描述】:
这里的一些答案(How to loop through a boost::mpl::list? 是我开始的答案)暗示我应该能够构造一个通用 lambda 来提供给 boost::mpl::for_each() 但我找不到工作示例,或自己构建一个。
理想情况下,我希望能够在 lambda 中执行类似的函数
template<typename T>
void TestFunction(const int &p)
{
T t(p);
std::cout << "p = " << p << ", t = " << t << std::endl;
};
我目前正在循环调用类似的东西
for(int k = 0; k < 2; ++k)
{
TestFunction<int>(k);
TestFunction<long>(k);
TestFunction<float>(k);
TestFunction<double>(k);
};
并用类似的东西替换它
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.
};
这可能吗?如果不是 for_each() 和其他 mpl 构造之一?我有一个代码版本在运行,我重载了 operator(),但如果可能的话,我希望看到一个 lambda 解决方案。
谢谢, 安迪。
【问题讨论】:
标签: c++ templates boost lambda boost-mpl