为什么C++标准不包括比较智能指针(unique_ptr,shared_ptr等)和常规指针(T*)的比较运算符?
汤姆
更新: 我不是想知道如何实现,而是想知道为什么它没有作为C++标准的一部分来定义?对于unique_ptr和shared_ptr这样的定义将是微不足道的。
以下是一个使用案例: 类A具有使用unique_ptr键的映射。 unique_ptr用于内存管理。 当类A的用户传递一个常规指针时,会在此映射中执行查找。不幸的是,标准没有定义比较运算符。
汤姆
更新: 我不是想知道如何实现,而是想知道为什么它没有作为C++标准的一部分来定义?对于unique_ptr和shared_ptr这样的定义将是微不足道的。
以下是一个使用案例: 类A具有使用unique_ptr键的映射。 unique_ptr用于内存管理。 当类A的用户传递一个常规指针时,会在此映射中执行查找。不幸的是,标准没有定义比较运算符。
std::unordered_set
的,但大多数解决方案应该都适用。哦,而且似乎即使是 C++14 也不会放宽关联容器的接口限制。 - Christian Raustd::set<unique_ptr<T>>
中查找T*
有效,那么您也会期望反过来:在std::set<T*>
中查找std::unique_ptr<T>
同样有效。这些事情往往比您想象的更加复杂。 - MSalters