Есть две вещи, которые нужно исправить. Во-первых, вы хотите emplace
новый элемент (вы можете использовать insert
, но он будет более сложным). Во-вторых, поскольку вы не можете скопировать unique_ptr
, вам нужно переместить его вместо:
map.emplace(id, std::move(smart_list));
Чтобы использовать make_unique
, вам нужно инициализировать список немного по-другому:
auto list = std::make_unique<ClsAList>(1, a);
При этом используется конструктор, который берет начальное количество элементов для помещения в список и значение для их установки.
Наконец, они могут быть объединены в один оператор:
map.emplace(id, std::make_unique<ClsAList>(1, a));
Поскольку начальный unique_ptr
является временным, он будет перемещен из (автоматически, поскольку это возможно в этом случае).