Использование asio:: placeholder:: error

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

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

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

Ответ 1

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

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

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