Something như sau:Tôi có thể định nghĩa một con trỏ hàm trỏ đến một đối tượng của std :: function type không?
#include <functional>
int main()
{
std::function<int(int)> func = [](int x){return x;};
int* Fptr(int) = &func; //error
}
Các lỗi tôi nhận được
temp.cpp: In function ‘int main()’:
temp.cpp:6:15: warning: declaration of ‘int* Fptr(int)’ has ‘extern’ and is initialized
int* Fptr(int) = &func; //error
^
temp.cpp:6:20: error: invalid pure specifier (only ‘= 0’ is allowed) before ‘func’
int* Fptr(int) = &func; //error
^
temp.cpp:6:20: error: function ‘int* Fptr(int)’ is initialized like a variable
Một cách trực tiếp hơn để đi từ hàm lambda thực hiện chức năng con trỏ sẽ hữu ích để biết là tốt.
Bạn có cần các tiêu chuẩn: : chức năng hoặc là bạn chỉ cần cố gắng để có được một con trỏ hàm đến một lambda (capture-less)? – Mat
Không. Con trỏ hàm trỏ đến các hàm, không phải các đối tượng hoạt động như các hàm. – Galik
@Mat ban đầu tôi đã quan tâm đến lambda chụp ít. Tôi không chắc liệu các hàm lambda có hoạt động như một con trỏ làm giá trị không. – roro