我才發現,我的意料,下面的代碼不編譯開箱即用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