a
に含まれるすべての整数を にコピーしたいb
。
#include <vector>
#include <iterator>
#include <boost/bind.hpp>
#include <boost/range/algorithm/for_each.hpp>
#include <boost/range/algorithm/copy.hpp>
void test()
{
std::vector<std::vector<int> > a;
std::vector<int> b;
boost::for_each(a, boost::bind(boost::copy, _1, std::back_inserter(b)));
}
とてもシンプルに見えます。C++ 98 互換のワンライナーが欲しいです。
なぜこれはコンパイルされないのですか? に関するエラーの長いリストがありますがboost::bind
、理解できません。さらに、それは複数ページの長さです。
エラーは次で始まります:
エラー C2780: 'boost::_bi::bind_t<_bi::dm_result::type,boost::_mfi::dm,_bi::list_av_1::type> boost::bind(MT::* ,A1)' : 2 つの引数が必要です - 3 つ提供されます