Использование адаптеров Boost с лямбдами C ++ 11
Я пытался скомпилировать этот код:
#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.
В чем может быть проблема здесь? Есть ли способ сделать эту работу?