我尝试编译这段代码:
#include <boost/range/adaptors.hpp>
#include <boost/range/algorithm.hpp>
#include <vector>
int main() {
std::vector<int> v{
1,5,4,2,8,5,3,7,9
};
std::cout << *boost::min_element(v | boost::adaptors::transformed(
[](int i) { return -i; })) << std::endl;
return 0;
}
编译失败,并显示以下错误消息(在长模板实例化小说之后):/usr/local/include/boost/iterator/transform_iterator.hpp:84:26: error: use of deleted function ‘main()::<lambda(int)>::<lambda>()’
../main.cpp:12:5: error: a lambda closure type has a deleted default constructor
我在谷歌上搜到了这个问题,发现从Boost用户邮件列表归档中找到了这个。建议使用#define BOOST_RESULT_OF_USE_DECLTYPE
来解决问题。我把它放在了我的代码非常开始的位置,但还是无法编译。错误消息的长度似乎短多了,但最后的错误消息仍然相同。我目前正在使用Boost 1.50。
这里可能出了什么问题?有没有办法让它工作?