boost::function
以下に定義するように、値を含むマップがあります。
std::map <std::string, boost::function<std::string (std::string, int)> > handlers;
次の関数を定義するとします。
using namespace std;
string substring (string input, int index = 0){
if (index <= 0){
return input;
}
stringstream ss;
for (int j = index; j<input.length(); j++){
ss << input[j];
}
return ss.str();
}
これをハンドラーマップに保存できるようにしたいのですが、WITHはオプションのパラメーターです。ブーストにはこれを実行する方法がありますか?私は見ましたboost::optional
が、それは私が望むことをしていないようです。
編集
もう少し背景を説明するために、辞書(typedef std::map < std::string, std::string > dictionary
)などへのポインターなど、追加の引数を必要とするハンドラーがいくつかあります。これらのハンドラーは、その辞書に変更を加えるためです。ただし、ハンドラーの大部分は問題の辞書にアクセスしませんが、すべてを同じマップに格納するには、すべて同じ引数を取る必要があります(のテンプレートは同じですboost::function
)。目標は、辞書をまったく処理しない関数を、A)辞書を渡して使用しないという唯一の目的で辞書を作成するか、B)コードをそのまま別の関数にコピーすることなく使用できるようにすることです。その引数は必要ありません。
上記のコードは、私が行っていることの単純化された例です。