非同期メソッドを利用してソケットでデータを読み書きするboost::asioコードをいくつか継承しました。現在、コードは次のようなクラス メンバー関数への読み取り/書き込みハンドラーに boost::bind を使用します。
boost::asio::async_read(socket_, boost::asio::buffer(&in_data.header.packet_size, 1), boost::bind(&SocketIO::handle_read, shared_from_this(), boost::asio::placeholders::error);
boost::function を使用してバインドの格納されたバージョンを使用するようにコードを変更したいのですが、これを行うことに利点または欠点があるかどうかは不明です。バインドを継続的に再作成しないと、オブジェクトの割り当てが減ると思います。ただし、 async_receive のブースト ドキュメント ( Listed Here ) には、「必要に応じてハンドラーのコピーが作成されます」と記載されています。どのような条件でコピーを作成する必要があるかどうかはわかりません。
これに関する洞察をいただければ幸いです。