boost::bind() に渡せる引数の最大数
5105 次
2 に答える
11
于 2011-02-10T10:23:27.087 に答える
3
C++11 に切り替えることができない場合でも、boost::function から、C++11 のプレビューであった TR1 関数への切り替えを検討する必要があります。
基本的に、boost::function として始まったものは C++ 標準ライブラリの一部となり、現在では可変個引数テンプレートで定義されています。一言で言えば、これはハード リミットがなくなったことを意味します (ただし、 を超える何かが必要な場合は、追加のプレースホルダー変数を定義する必要があるかもしれません_19
) 。
boost::function から std::tr1 に切り替えるには、次のようにします。
#include <boost/function>
andのすべての出現箇所を見つけて#include <boost/bind>
、それらを次のように置き換えます。
#include <tr1/functional>
using std::tr1::function;
using std::tr1::bind;
using std::tr1::placeholders::_1;
using std::tr1::placeholders::_2;
...
これは、ドロップインの代替品として機能するはずです。後で C++11 に切り替えた場合は、「tr1」の部分を捨ててください。
于 2013-07-03T21:29:13.280 に答える