5

boost::bind() に渡せる引数の最大数

4

2 に答える 2

11

デフォルトでは9です。

http://www.boost.org/doc/libs/1_45_0/libs/bind/bind.html#NumberOfArguments

于 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 に答える