Рассмотрим следующий код:
#include <unordered_map>
struct A {};
struct T
{
std::unordered_map<std::string, A> _map;
};
struct L
{
std::shared_ptr<const T> _c;
};
class f {
void oid (std::shared_ptr<L> l, std::string st, A a) {
l->_c->_map.insert(std::make_pair(st,a));
}
};
Во время компиляции выдает следующую ошибку:
ошибка C2663: 'std :: _ Hash <_Traits> :: insert': 3 перегрузки не имеют законных
преобразование для этого указателя
с
[
_Traits = станд :: tr1 :: _ Umap_traits, станд :: equal_to>, станд :: Распределитель>, ложь>
]
Я пытался удалить const
из std::shared_ptr<const T> _c;
(не то, чтобы я думал, что это имеет значение), но это создает некоторые другие ошибки ...
Спасибо за вашу помощь!