using click = std::function<void(void*,bool)>;的作用
时间: 2023-12-25 15:18:20 浏览: 31
这是一个C++11中的类型别名,它将一个函数类型`std::function<void(void*, bool)>`定义为一个新的名称click。
这个函数类型的定义表示它是一个可以接受一个`void*`类型和一个`bool`类型的参数,返回值为空的函数。这个类型别名可以方便地用于定义函数指针或函数对象。
例如,我们可以这样定义一个函数对象myClick,它符合click的函数类型:
```
struct myClick
{
void operator()(void* arg, bool flag) const
{
// do something with arg and flag
}
};
```
然后我们可以使用myClick对象作为click类型的参数传递给另一个函数:
```
void doSomething(click func)
{
void* arg = ...;
bool flag = ...;
func(arg, flag);
}
int main()
{
myClick c;
doSomething(c); // call c.operator()(arg, flag)
return 0;
}
```
这样就可以方便地实现带有额外标志位的回调函数等功能。
相关问题
std::function<bool(void)>
std::function<bool(void)>是一个函数对象类型,它可以存储任何可调用对象,包括函数、函数指针、lambda表达式、bind()创建的对象、重载了函数调用运算符的类(仿函数)等。它的模板参数是函数的返回类型和参数列表,例如bool为返回类型,void为参数列表。这个函数对象可以像普通函数一样被调用,也可以作为参数传递给其他函数。在这个例子中,std::function<bool(void)>表示一个没有参数且返回值为bool类型的可调用对象。
std::function<void(bool, std::string)>
引用中给出了一个使用function_traits模板类的例子,该模板类用于从std::function中提取信息。根据这个例子,我们可以得出以下结论:
对于std::function<void(bool, std::string)>,function_traits的value将返回2,表示有两个参数。
result_type将返回void,表示返回类型为void。
get<0>::type将返回bool,表示第一个参数的类型为bool。
get<1>::type将返回std::string,表示第二个参数的类型为std::string。
因此,std::function<void(bool, std::string)>的信息如下:
- 有两个参数:bool和std::string
- 返回类型为void