使用升壓適配器我試圖編譯的代碼:與C++ 11 lambda表達式
#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郵件列表存檔中找到this。它建議使用#define BOOST_RESULT_OF_USE_DECLTYPE
可以解決問題。我把它放到我的代碼的開頭,但它仍然不能編譯。錯誤消息的長度似乎要短得多,但最後的錯誤消息是相同的。我目前正在使用Boost 1.50。
這裏有什麼問題?有什麼辦法可以做到這一點?
我認爲你需要1.51。至少這是爲我工作的原因。 – Gurgeh 2012-10-01 15:21:01