asio :: placeholder :: error有什么用?

kva*_*nck 10 c++ boost boost-bind boost-asio

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

这个参数有什么意义?asio实际上是否填充了此参数的错误?

如果我从处理程序函数中删除它,它编译得很好.

Igo*_* R. 11

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

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

但是,您始终可以bind使用期望较少参数的函数(在本例中为零) - 当调用绑定器时,将以静默方式忽略任何额外参数.