c++ - asio::placeholder::error 有什么用

标签 c++ boost boost-asio boost-bind

asio 库在其许多示例中传递了一个错误参数,即; http://think-async.com/Asio/asio-1.5.3/src/examples/echo/async_tcp_echo_server.cpp

这个参数有什么意义? asio 是否真的用错误填充了这个参数?

如果我将它从我的处理程序函数中删除,它可以正常编译。

最佳答案

实际上,asio::placeholders::error 等同于 _1 Boost.Bind 占位符,所以 bind(&my_class::handler, this, asio: :placeholders::error) 就像 bind(&my_class::handler, this, _1)

当 Boost.Asio 完成处理程序调度程序调用此处理程序时,error_code 作为第一个参数传递给此函数。

但是,您始终可以绑定(bind) 需要较少参数(在本例中为零)的函数 - 当绑定(bind)器被调用时,any extra arguments are silently ignored .

关于c++ - asio::placeholder::error 有什么用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15859605/

相关文章:

c++ - 部分TCP丢包

python - Boost Python enum_ max 问题

c++ - “_FCbuild”不能用作函数 - C/C++ 代码错误

c++ - boost::asio::io_service::poll() 的问题

c++ - 没有实际 block 的 if block 内的声明是否有效?

c++ - LNK2019 在 Windows 上使用 Boost python3 和 numpy3 库时 VS2015 中未解析的外部符号

c++ - HTTP Server 3 示例中跨线程的 boost::asio 套接字共享

c++ - 将 HTTP header 添加到 Windows 上的所有传出数据包?

c++ - 如何初始化数组并将其作为参数传递而不声明它?

c++ - 汇总来自多个捐助者的捐款