Hi. I am experiencing some issues with boost::bind and I was hoping if anybody is willing to help me. The example is really simple: First I have a function: void com_client::handle_init( const std::string& host, const command_t command) { boost::asio::ip::tcp::resolver resolver(connection_.socket().io_service()); boost::asio::ip::tcp::resolver::query query(host, service_); boost::asio::ip::tcp::resolver::iterator endpoint_iterator; endpoint_iterator = resolver.resolve(query); boost::asio::ip::tcp::endpoint endpoint = *endpoint_iterator; connection_.socket().async_connect(endpoint, boost::bind( &com_client::handle_connect, this, 2, boost::asio::placeholders::error, ++endpoint_iterator) ); } After successful handshake, this function is called: void com_client::handle_connect( command_t command, const boost::system::error_code& e, boost::asio::ip::tcp::resolver::iterator endpoint_iterator) { if (!e) { rLog(com_client_control_, "Connection established with remote end-point %s.", connection_.socket().remote_endpoint().address().to_string().c_str()); command_ = DEPOSIT_CHUNK; connection_.async_write(command_, boost::bind( &com_client::handle_write_cmd, this, boost::asio::placeholders::error) ); } else if (endpoint_iterator != boost::asio::ip::tcp::resolver::iterator()) { connection_.socket().close(); boost::asio::ip::tcp::endpoint endpoint = *endpoint_iterator; connection_.socket().async_connect(endpoint, boost::bind( &com_client::handle_connect, this, boost::asio::placeholders::error, ++endpoint_iterator)); } else { std::cerr << e.message() << std::endl; } } This issue is when I modify the code such that connection_.socket().async_connect(endpoint, boost::bind( &com_client::handle_connect, this, //2, boost::asio::placeholders::error, ++endpoint_iterator) ); void com_client::handle_connect( //command_t command, const boost::system::error_code& e, boost::asio::ip::tcp::resolver::iterator endpoint_iterator) { one of the arguments is removed code compiles. And also: enum command_t { DEPOSIT_CHUNK = 2, DETRIEVE_CHUNK = 4, HEARTBEAT = 16 }; I was hoping if somebody could explain this. I've attached g++ output. -V