Я хочу скопировать все целые числа, содержащиеся в a
, в b
.Комбинация диапазона повышения для for_each, bind, copy и back_inserter не работает
#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: тип «повышение :: _ би :: bind_t < _bi :: dm_result :: тип, форсирует :: _ ммк :: дм, _bi :: list_av_1 :: > boost :: bind (MT :: *, A1) ': ожидает 2 аргумента - 3 предоставлено
Уточнитните «не работает», авария? не компилируется? если у вас есть сообщение об ошибке, пожалуйста, сообщите об этом. – Borgleader
Это не работает, потому что в нем есть «некоторая ошибка». Если вы более конкретно, вы не получите лучшего ответа. – SergeyA
К сожалению, добавлена дополнительная информация – lars