gpt4 book ai didi

c++ - 重载模板函数的标准绑定(bind)

转载 作者:搜寻专家 更新时间:2023-10-31 02:17:35 24 4
gpt4 key购买 nike

我是 C++ 的新手,尤其是模板。我正在尝试使用绑定(bind)到一个重载的模板函数——实际函数是 serial_port::set_option。现在我已经达到了以下形式:

auto f = std::bind(static_cast<boost::system::error_code(serial_port::*)
(const SettableSerialPortOption&,boost::system::error_code&)>
(&serial_port::set_option),sp_ptr,_1,ec);

sp_ptr 定义为:

std::shared_ptr<serial_port> sp_ptr;

重载方法定义为:

template<
typename SettableSerialPortOption>
boost::system::error_code set_option(
const SettableSerialPortOption & option,
boost::system::error_code & ec);

我的意图是接到这样的电话:

f(boost::asio::serial_port::baud_rate(9600));

工作。我不知道在哪里定义名称 SettableSerialPortOption。你能提供一些帮助吗?

最佳答案

更新:我能够做到这一点:

auto &local_ptr = sp_ptr;
auto f = [local_ptr,&ec] (auto&& a){local_ptr>set_option(decltype(a)a,ec);};
f(baud_rate);

感谢 Piotr Skotnicki 提供的解决方案。(完美转发)感谢 Yakk,我需要阅读这方面的内容,这对我来说已经很技术化了,但对于其他用户和 future 的引用来说,显然这是要走的路。

关于c++ - 重载模板函数的标准绑定(bind),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35578779/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com