为什么Qt的qHash()没有std :: shared_ptr的重载?

时间:2015-05-29 14:06:16

标签: c++ qt overloading shared-ptr qhash

令我惊讶的是,我发现以下代码不能使用Qt 5.4在C ++ 14中开箱即用:

QSet<std::shared_ptr<SomeType>> var;

问题是qHash()的{​​{1}}方法或任何其他智能指针都没有超载,据我所知: http://doc.qt.io/qt-5/qhash.html#related-non-members

对我来说,拥有以下重载(或类似的东西)似乎很自然:

std::shared_ptr

但它不存在。这不仅仅是Qt开发人员忽视的问题。我需要包含特殊标题吗?这不存在的原因是什么?

2 个答案:

答案 0 :(得分:2)

说出魔鬼,他出现了: https://codereview.qt-project.org/113340

  

这不仅仅是Qt开发人员忽视的问题。

这不是一个忽视,它只是Qt没有无限的资源来为任何具有qHash的STL类型添加operator==重载。< / p>

答案 1 :(得分:1)

  

这不仅仅是Qt开发人员忽视的问题。

它是,并且它不是被忽视的东西 - 根本不可能立刻编写所有代码。一个人必须停在某个地方并做一个释放。随意提交将修复此问题的代码修订版:)尽管如此,请确保修订版将在所有平台上构建,并且所有支持的编译器都有 - 其中一些版本的库没有std::shared_ptr