我想使用Boost范围适配器通过C ++ 11 lambda函数将地图映射(转换)到列表中。 像这样:
boost::copy(myMap | transformed([](pair<string, string> p){return p.first;}),
ostream_iterator<string>(cout, ", "));
这不起作用,因为std :: function没有value_type-type。我知道这个特殊的转换可以用map_keys完成,但我的观点更为笼统。如何将C ++ 11 lambdas与Boost一起使用?
如果没有样板不能做到,有没有计划解决这个问题?我试过去寻找它,但发现却很少见。
答案 0 :(得分:1)
我自己找到了!从Boost 1.51.0开始,添加
#define BOOST_RESULT_OF_USE_DECLTYPE
在包含boost文件之前,它会神奇地使用decltype而不是:: value_type来推断返回类型。现在我的例子有效!