Вам необходимо скопировать элементы. Рассмотрим что-то вроде этого:
std::copy(a.begin(), a.end(), std::inserter(b, b_iterator));
Если вы хотите, чтобы одни и те же узлы совместно использовались двумя списками, это просто не поддерживается std::list
(контейнеры STL всегда имеют исключительное владение). Вы можете избежать дублирования элементов, сохраняя указатели в списке или используя boost::ptr_list
, который внутренне хранит указатели, но предлагает более приятный API.