tôi đã cố gắng để biên dịch mã này:Sử dụng adapter Boost với C++ 11 lambdas
#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;
}
Việc lập thất bại với các thông báo lỗi sau (sau khi một cuốn tiểu thuyết instantiation mẫu dài):
/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
Tôi đã giải quyết vấn đề và tìm thấy this trong lưu trữ danh sách gửi thư của Người dùng nâng cao. Nó gợi ý rằng việc sử dụng #define BOOST_RESULT_OF_USE_DECLTYPE
sẽ giải quyết được vấn đề. Tôi đặt nó vào đầu mã của tôi, nhưng nó vẫn không biên dịch. Độ dài của thông báo lỗi có vẻ ngắn hơn nhiều, nhưng thông báo lỗi ở cuối là như nhau. Tôi hiện đang sử dụng Boost 1.50.
Điều gì có thể là vấn đề ở đây? Có cách nào để thực hiện công việc này không?
Tôi nghĩ bạn cần 1.51. Ít nhất đó là những gì làm cho nó làm việc cho tôi. – Gurgeh