Я здесь учусь, как использовать boost :: lambda. У меня есть один вопрос о вызове функции-члена. Это всего лишь тест, и я хотел бы сделать это с boost :: lambda, поскольку, очевидно, существует полмиллиона способов скопировать элементы из одного контейнера в другой контейнер.
У меня есть list<int>
, который имеет 3 элемента:
std::list<int> a;
a.push_back(2);
a.push_back(3);
a.push_back(4);
А vector<int>
:
vector<int> b;
Я пытаюсь сделать следующее: для каждого элемента в a сдвинуть его обратно в b. Вот мой снимок:
std::for_each(a.begin(), a.end(), (b ->* (&std::vector<int>::push_back))(_1) );
Проблема в том, что он не принимает вызов функции-члена, говоря:
no match for ‘operator->*’ in ‘b ->* &std::vector<int, std::allocator<int> >::push_back’
Я пробовал другие способы, но они тоже не работали.
Заранее спасибо.