LINUX.ORG.RU

История изменений

Исправление MirandaUser2, (текущая версия) :

а через индексатор то как-работать?
Потому что при использовании emplace работает и std::map<int,AnyS&> (как у ТС изначально)
А если мне нужен не emplace, а assign, то и твой вариант с std::map<int,std::reference_wrapper<AnyS>> не работает.

m[1]=std::ref(as0);

/usr/lib/gcc/x86_64-pc-linux-gnu/10.3.0/include/g++-v10/tuple:1693:70: error: no matching function for call to ‘std::reference_wrapper<AnyS>::reference_wrapper()’

P.S. insert_or_assign - добавлен только в C++17
P.P.S. можно конечно и через find() и at() производить assign, но опять же непонятно в чём тут польза от std::reference_wrapper

Исправление MirandaUser2, :

а через индексатор то как-работать?
Потому что при использовании emplace работает и std::map<int,AnyS&> (как у ТС изначально)
А если мне нужен не emplace, а assign, то и твой вариант с std::map<int,std::reference_wrapper<AnyS>> не работает.

m[1]=std::ref(as0);

/usr/lib/gcc/x86_64-pc-linux-gnu/10.3.0/include/g++-v10/tuple:1693:70: error: no matching function for call to ‘std::reference_wrapper<AnyS>::reference_wrapper()’

P.S. insert_or_assign - добавлен только в C++17

Исходная версия MirandaUser2, :

а через индексатор то как-работать?
Потому что при использовании emplace работает и std::map<int,AnyS&> (как у ТС изначально)
А если мне нужен не emplace, а assign, то и твой вариант с std::map<int,std::reference_wrapper<AnyS>> не работает.

m[1]=std::ref(as0);

/usr/lib/gcc/x86_64-pc-linux-gnu/10.3.0/include/g++-v10/tuple:1693:70: error: no matching function for call to ‘std::reference_wrapper<AnyS>::reference_wrapper()’