是否可以使用boost :: mpl :: for_each迭代一个带有lambda的元组? MPL文档创建了一个远离调用大小的单独类,它迭代了给予for_each的类型,是否可以使用lambda?或者可以编写单独的类作为参数作为一个lambda,将应用于给予for_each的所有类型?像这样的东西,除了增量器应该采用lambda(在构造函数?中)定义要执行的操作,并且可以在for_each的调用站点写入:
#include "boost/mpl/for_each.hpp"
#include "tuple"
using namespace std;
using namespace boost::mpl;
template<class Tuple_T>
struct incrementer
{
incrementer(Tuple_T& given) : tuple(given){}
template<class T> void operator()(const T&)
{
// how to write this in main() instead?
// [&](?){? += 1}?
get<T>(this->tuple) += 1;
}
Tuple_T& tuple;
};
int main(){
tuple<int, float, double> t{1, 2, 3};
for_each<int, double>(incrementer<decltype(t)>(t));
assert(get<0>(t) == 2);
assert(get<1>(t) == 2);
assert(get<2>(t) == 4);
return 0;
}