Использование адаптеров 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.

В чем может быть проблема здесь? Есть ли способ сделать эту работу?

Ответы на вопрос(4)

Ваш ответ на вопрос