我试图编译这段代码:
#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 Users 邮件列表存档中找到了这个问题。它建议使用#define BOOST_RESULT_OF_USE_DECLTYPE
将解决问题。我把它放在我的代码的最开始,但它仍然没有编译。错误信息的长度似乎短了很多,但最后的错误信息是一样的。我目前正在使用 Boost 1.50。
这里有什么问题?有什么办法可以使这项工作?