对 std::map<string,string> m; 是否可以 auto x = m["abc"];
std::map m; auto x = m["abc"];
如果可以,那么对 map 有这样的定义:
template<keytype,valuetype,.>
class map {
valuetype & operator[](const keytype &); // 这个最有可能
valuetype & operator[](keytype ); // 这种总会生成临时对象,效率太低
valuetype & operator[](const char *); // 这样当然可以使上面调用成立,但要考虑到map是一个模板类,
// 它的键类型,可以是字符串,也可以是其它类型,如对map<int,string> 按"abc" 取到值,是什么鬼?
}
但跟了一下源代码,到string的移动构造函数里去了,什么情况?