に慣れようとしているときに、と一緒boost
に使用すると問題が発生しました。私は簡単なことをしようとしています。類似した署名を持つ関数のリストを用意し、サンプルデータでそのすべての関数を使用します。コードは次のとおりです。boost::function
std::vector
std::for_each
typedef boost::function<int (const char*)> text_processor;
typedef std::vector<text_processor> text_processors;
text_processors processors;
processors.push_back(std::atoi);
processors.push_back(std::strlen);
const char data[] = "123";
std::for_each(processors.begin(), processors.end(),
std::cout << boost::bind(&text_processors::value_type::operator(), _1, data)
<< "\n"
);
それで、for_each
私は標準出力にすべての関数をサンプルデータに適用した結果を書き込もうとしています。ただし、このようにコンパイルされることはありません(結果の演算子<<
が欠落していることに関する長いメッセージbind
)。
ストリーム演算子を削除すると、コンパイル可能ですが役に立たないコードになります。秘訣は、関数の適用とテキスト出力を1つで実行したいということですfor_each
。私は何が欠けていますか?ラムダやそのようなsmthを使用すると簡単なはずですが、正しい解決策を見つけることはできません。