关于从 WriteToken 签名中删除参数的文档在哪里,如官方 ASIO 示例所示?

问题描述 投票:0回答:1

在此示例中: https://www.boost.org/doc/libs/1_83_0/doc/html/boost_asio/tutorial/tutdaytime3.html#boost_asio.tutorial.tutdaytime3.removing_unused_handler_parameters

上面写着:

您可能已经注意到了错误,handle_write()函数体中没有使用bytes_transferred参数。如果不需要参数,可以从函数中删除它们

但是,似乎其他地方都一样( https://www.boost.org/doc/libs/1_80_0/doc/html/boost_asio/reference/async_write.htmlhttps://live.boost.org/doc/libs/1_83_0/doc/html/ boost_asio/reference/WriteHandler.html ),文档说类似函数应该与签名匹配。

我尝试使用空的 lambda,事实上,它抱怨签名。 是 boost::bind 允许 async_write 调用它并丢弃参数吗?

官方 boost 文档中记录在哪里?

c++ asynchronous boost asio boost-bind
1个回答
0
投票

正如问题中所假设的,它是

boost::bind
允许的。

使用 boost::bind 传递比预期更多的参数是否安全?

boost::bind 的结果可以用更多参数进行自调用 :

请注意,在最后一个示例中,bind(g, _1, _1, _1) 生成的函数对象不包含对第一个参数之外的任何参数的引用,但它仍然可以与多个参数一起使用。任何额外的参数都会被默默地忽略,就像第三个示例中的第一个和第二个参数被忽略一样。

https://www.boost.org/doc/libs/1_83_0/libs/bind/doc/html/bind.html#bind. Purpose.using_bind_with_functions_and_fu

由于可以使用额外参数调用具有

boost::bind
的绑定函数,因此编译器不会抱怨。

© www.soinside.com 2019 - 2024. All rights reserved.