我正在尝试std::function与之配合使用std::bind,但我遇到了一些问题.
这有效:
#include <functional>
#include <iostream>
void print() {
std::cout << 2;
}
int main() {
std::function<void ()> foo = print;
(*foo.target<void (*)()>())(); //prints 3
}
Run Code Online (Sandbox Code Playgroud)
这崩溃在第二行main:
#include <functional>
#include <iostream>
void print (int i) {
std::cout << i;
}
int main() {
std::function<void ()> foo = std::bind (print, 2);
(*foo.target<void (*)()>())();
}
Run Code Online (Sandbox Code Playgroud)
我真的抱着std::function<void ()>并且需要能够返回功能; 不只是打电话给它.我希望用法是这样的:
#include <functional>
#include <iostream>
void print (int i) {
std::cout << i;
}
int main() { …Run Code Online (Sandbox Code Playgroud)