void fun( std::function<bool(void)> ) 动态调用 写个例子
时间: 2023-12-25 10:46:51 浏览: 70
好的,这是一个使用 std::function 和动态调用函数的示例:
```c++
#include <functional>
#include <iostream>
void fun(std::function<bool(void)> f) {
if (f()) {
std::cout << "The function returned true!" << std::endl;
} else {
std::cout << "The function returned false!" << std::endl;
}
}
bool is_even(int x) {
return x % 2 == 0;
}
int main() {
// 使用 lambda 表达式作为参数
int num = 5;
fun([num]() {
return is_even(num);
});
// 使用函数指针作为参数
bool (*is_odd)(int) = [](int x) {
return x % 2 == 1;
};
fun(std::bind(is_odd, num));
return 0;
}
```
这个程序定义了一个函数 `fun`,它的参数是一个返回 bool 类型的函数对象,它会调用这个函数,并根据返回值输出不同的信息。程序还定义了一个 `is_even` 函数和一个 lambda 表达式,它们都可以作为参数传递给 `fun` 函数。在 `main` 函数中,我们演示了如何使用 lambda 表达式和函数指针作为参数。
阅读全文