Làm cách nào để tạo hàm lambda bằng cách sử dụng boost hoặc stl để khớp với thông số boost::function
được mong đợi bởi F
trong đoạn mã thứ ba trong main
?Làm cách nào để tạo một hàm lambda để khớp với tham số hàm boost :: mà không sử dụng C++ 0x?
#include <iostream>
#include <boost/function.hpp>
void F(int a, boost::function<bool(int)> f) {
std::cout << "a = " << a << " f(a) = " << f(a) << std::endl;
}
bool G(int x) {
return x == 0;
}
int main(int arg, char** argv) {
// C++0x
F(123, [](int i) { return i==0; });
// Using seperate function
F(0, &G);
// How can I do it in place without C++0x
F(123, /* create a lambda here to match */);
}
Tôi không thể sử dụng C++ 0x và muốn tránh tạo một số chức năng riêng biệt. Tôi có thể sử dụng một cái gì đó khác mà boost::function
nếu điều đó giúp, ưu tiên của tôi là tạo ra lambda ngắn gọn.
Tôi bây giờ tự hỏi ... làm thế nào mà bạn không thể sử dụng C++ 0x nhưng bạn muốn sử dụng 'std :: function' là một phần của C++ 0x? BTW, hãy xem thư viện lambda tăng cường, vì nó có thể là những gì bạn đang tìm kiếm. –
@David: boost :: function not std :: function –