Рассмотрим следующий код:
#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 перегрузки не имеют допустимого преобразования для указателя this с помощью [ _Traits=std::tr1::_Umap_traits,std::equal_to>,std::allocator> ,ложь> ]
Я попытался удалить const
из std::shared_ptr<const T> _c;
(не то чтобы я думаю, что это имеет значение), но он создает некоторые другие ошибки...
Спасибо за вашу помощь!
const
, что на самом деле имеет большое значение? - person David Rodríguez - dribeas   schedule 14.03.2012