为什么这会创建一个内部为nullptr的unique_ptr? (使用简化的示例。)
absl::flat_hash_map<int32, std::unique_ptr<std::string>> strings;
auto& s = strings[0];
assert(s.get() != nullptr);
或者,我可以使用insert_or_assign()/ insert()并传入外部创建的unique_ptr。但是我试图理解为什么运算符重载不能解决这个问题。
参考:https://github.com/abseil/abseil-cpp/blob/master/absl/container/flat_hash_map.h#L466
[]
运算符,以返回您的引用,如果该键不存在,将使用其默认构造函数自动创建一个对象。 unique_ptr
的默认构造函数会自动将其初始化为nullptr