cố gắng bắt đầu từ std::chức năng
Dẫn xuất một lớp và trước tiên, hãy kế thừa hàm tạo. Đây là dự đoán của tôi:
#include
#include
sử dụng không gian tên std;
mẫu< lớp R, lớp... Args >
lớp MyFunction : public std::function {
công cộng:
sử dụng std::function::function;
};
int chính() {
std::function f_display_42 = []() { std::cout << 42;
MyFunction của tôi = []() { std::cout << 42 };
}
Lỗi được trả về là:
prog.cpp: Khi khởi tạo 'class MyFunction':
prog.cpp:14:24: được yêu cầu từ đây
prog.cpp:6:7: error: hàm trả về một hàm
lớp MyFunction : public std::function {
^
prog.cpp:8:38: error: hàm trả về một hàm
sử dụng std::function::function;
^
prog.cpp:8:38: error: khai báo sử dụng cho người không phải là thành viên ở phạm vi lớp
prog.cpp: Trong hàm 'int main()':
prog.cpp:14:55: error: chuyển đổi từ 'main()::__lambda1'
thành loại không vô hướng 'MyFunction' được yêu cầu
MyFunction của tôi = []() { std::cout << 42 };
Trong GCC 4.8.2.
Thêm vào Chris trả lời , nếu bạn muốn định nghĩa hiện tại hợp lệ, hãy sử dụng
MyFunction của tôi = []() { std::cout << 42 };
Nếu bạn muốn một cái gì đó đẹp như nhau MyFunction
Cú pháp là std::chức năng
, thì bạn phải cung cấp một mẫu lớp chính chưa được triển khai và một mẫu bắt nguồn từ std::chức năng
chuyên môn hóa. (Đây chính xác là std::chức năng
xong).
mẫu< lớp R, lớp... Args >
lớp MyFunction;
mẫu< lớp R, lớp... Args >
lớp MyFunction : public std::function
{ ... }
Bản trình diễn trực tiếp
Tôi là một lập trình viên xuất sắc, rất giỏi!