Make zmqpp::socket::connect a std::future
Make zmqpp::socket::connect a std::future
我想绑定一个重载函数来创建std::future
zmqpp::socket::connect
,如下所示:
void connect (endpoint_t const &endpoint)
我做的第一件事是:auto binded_connect = std::bind(&zmqpp::socket::connect, socket, endpoint);
但这很糟糕,因为zmqpp::socket::connect
是一个重载函数
所以我广播了connect函数
auto binded_connect = std::bind(static_cast<void(zmqpp::socket::*)(zmqpp::endpoint_t const&)>(&zmqpp::socket::connect), socket, endpoint);
问题是g++不喜欢那样
他说了很多关于元组的事情,但我认为最重要的是:
/usr/include/c++/8/functional:467:70: error: no matching function for call to ‘std::tuple<zmqpp::socket, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >::tuple(zmqpp::socket&, const std::__cxx11::basic_string<char>&)’
所以我现在真的不知道该怎么办,我不知道在哪里搜索才能找到答案
我也很抱歉英语不好,不是主要语言
谢谢你的建议。
因为connect
是socket
类的成员方法,所以需要通过指针或引用传递socket
对象:
当调用指向非静态成员函数的指针或指向非静态数据成员的指针时,第一个参数必须是指向其成员将被访问的对象的引用或指针:->更多此处
auto binded_connect = std::bind(static_cast<void(zmqpp::socket::*)(zmqpp::endpoint_t const&)>(&zmqpp::socket::connect),
&socket, endpoint);
^^^^^^^^
or
auto binded_connect = std::bind(static_cast<void(zmqpp::socket::*)(zmqpp::endpoint_t const&)>(&zmqpp::socket::connect),
std::ref(socket), endpoint);
^^^^^^^^^^^^^^^^
相关文章:
- 架构决策:返回std::future还是提供回调
- std::p romise::set_value() 和 std::future::wait() 是否提供内存围栏?
- 修改在 std::future 的 lambda 中引用捕获的值
- C++ std::future没有被调用
- 对于等待以 std::future wait() 返回的函数的 CPU 使用率或检查标志在循环中休眠一段时间哪个更好?
- Make zmqpp::socket::connect a std::future
- std::future可以比std::promise活得更长吗
- std::future::get()或std::future::wait()是std::thread::join()的替
- 当 std::future 准备好被检索时发出信号主线程
- 当多次调用时,"std::future::then"的行为是什么?
- 使用 std::future 的不完整类型无效使用
- 为什么 std::future::wait_for 的行为不符合预期?
- 是什么给了 std::future 一些共享状态
- STD :: Future no_state异常与断言
- 标准是否保证在移动std::p ackaged_task后安全使用std::future?
- 将 Boost 链与 std::future 结合使用
- 删除 std::future 和 std::p romise 的空白专用化
- std::future给了我错误3,我做错了什么
- 如何在 std::future 的向量中调用异步函数
- 在 std::future::unwrap() 和 std::future::get() 中竞争