Какая польза от asio::placeholder::error

Библиотека asio передает параметр ошибки во многих своих примерах, т.е. http://think-async.com/Asio/asio-1.5.3/src/examples/echo/async_tcp_echo_server.cpp

Какой смысл в этом параметре? Действительно ли asio заполняет этот параметр ошибками?

Если я удалю его из своей функции обработчика, он отлично скомпилируется.


person kvanbere    schedule 07.04.2013    source источник


Ответы (1)


На самом деле asio::placeholders::error эквивалентен заполнителю _1 Boost.Bind, поэтому bind(&my_class::handler, this, asio::placeholders::error) аналогичен bind(&my_class::handler, this, _1).

Когда этот обработчик вызывается диспетчером обработчика завершения Boost.Asio, error_code передается в качестве 1-го аргумента этой функции.

Однако вы всегда можете bind использовать функцию, которая ожидает меньшее количество аргументов (в данном случае — ноль) — при вызове биндера все дополнительные аргументы игнорируются.

person Igor R.    schedule 07.04.2013