考虑以下代码:
#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=std::tr1::_Umap_traits,std::equal_to>,std::allocator> 的 'this' 指针没有合法转换,假>]
我试图删除const
from std::shared_ptr<const T> _c;
(不是我认为这很重要),但它构造了一些其他错误......
谢谢你的帮助!