我才发现,我的意料,下面的代码不编译开箱即用C++中使用Qt的14 5.4:为什么Qt的qHash()对std :: shared_ptr有重载?
QSet<std::shared_ptr<SomeType>> var;
的问题是,有没有qHash()
方法的重载对于std::shared_ptr
,或就任何其他智能指针,我可以看到: http://doc.qt.io/qt-5/qhash.html#related-non-members
它很自然地我有以下过载(或类似的东西):
template <typename T>
uint qHash(const std::shared_ptr<T>& ptr, uint seed = 0)
{
return qHash(ptr.get(), seed);
}
但它不存在。这不能简单地成为Qt开发者忽略的东西。我需要包含一个特殊的标题吗?这不存在的原因是什么?
为什么要混合Qt的set类和std的智能指针类有什么好的理由?为什么不'std :: unordered_set'? – MSalters