STD ::绑定和超载功能
std::bind and overloaded function
请参阅以下代码段。我想将std::bind
用于重载功能foobar
。它仅调用没有参数的方法。
#include <functional>
#include <iostream>
class Client
{
public :
void foobar(){std::cout << "no argument" << std::endl;}
void foobar(int){std::cout << "int argument" << std::endl;}
void foobar(double){std::cout << "double argument" << std::endl;}
};
int main()
{
Client cl;
//! This works
auto a1 = std::bind(static_cast<void(Client::*)(void)>(&Client::foobar),cl);
a1();
//! This does not
auto a2= [&](int)
{
std::bind(static_cast<void(Client::*)(int)>(&Client::foobar),cl);
};
a2(5);
return 0;
}
您需要使用 placeholders
进行未结合的参数:
auto a2 = std::bind(static_cast<void(Client::*)(int)>(&Client::foobar), cl,
std::placeholders::_1);
a2(5);
您还可以使用lambda捕获执行绑定(请注意,这是通过引用绑定的cl
,而不是通过值来绑定):
auto a2 = [&](int i) { cl.foobar(i); };
相关文章:
- 如果我具有调用其其他实例之一的超载函数,它是否被认为是递归功能
- 超载类成员功能标记为const
- 超载分辨率在模板实例化点后找到功能
- 构造函数超载以接受任何功能
- 界面设计:超载功能的安全性采用字符串和字符阵列
- Python C API-返回功能超载中的不同类型
- 模棱两可的功能超载[例如最大限度()]
- BOOST-ASIO ASYNC_RECEIVE_FROM功能超载问题( 动态指针)
- rvalue参数无法解析功能超载
- 指针到抽象类的功能超载
- 如果功能超载,则BOOST PHOENIX成员功能操作员无法编译
- 功能超载以接受所有类型的功能
- 功能超载以NULLPTR作为参数分辨率
- 为什么COUT在朋友函数中不起作用,该功能超载了操作员&lt;&lt;这是一个iStream运算符
- 功能超载rvalue
- 使用枚举的功能超载
- JNI本地功能超载签名
- 功能超载类设计
- 运行时的功能超载如何工作,以及为什么过载
- 功能超载不起作用