QtDBus: fix build on MSVC2008 Debug mode.
Normally, searching for a V in a container of T using std::lower_bound
only needs an operator<(T,V). But in MSVC2008 debug mode, STL algorithms
perform some extra checks, such as ensuring the range passed to
std::lower_bound is sorted. This adds a requirement for operator<(T,T)
and operator<(V,T).
QtDBus didn't compile on MSVC2008+Debug since 1e37d854 (Sept 2012!)
because it missed those operator overloads for some private types.
Task-number: QTBUG-33473
Change-Id: I18902d86e6c58349eb7ba3601dc383ad5431c460
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
bb10
parent
c8411a0281
commit
c40a48af99
|
|
@ -104,6 +104,10 @@ public: // typedefs
|
|||
{ return QLatin1String(interface) < other; }
|
||||
inline bool operator<(const QByteArray &other) const
|
||||
{ return interface < other; }
|
||||
#if defined(Q_CC_MSVC) && _MSC_VER < 1600
|
||||
friend inline bool operator<(const QString &str, const AdaptorData &obj)
|
||||
{ return str < QLatin1String(obj.interface); }
|
||||
#endif
|
||||
};
|
||||
typedef QVector<AdaptorData> AdaptorMap;
|
||||
|
||||
|
|
|
|||
|
|
@ -148,6 +148,14 @@ public:
|
|||
{ return name < other; }
|
||||
inline bool operator<(const QStringRef &other) const
|
||||
{ return QStringRef(&name) < other; }
|
||||
#if defined(Q_CC_MSVC) && _MSC_VER < 1600
|
||||
inline bool operator<(const ObjectTreeNode &other) const
|
||||
{ return name < other.name; }
|
||||
friend inline bool operator<(const QString &str, const ObjectTreeNode &obj)
|
||||
{ return str < obj.name; }
|
||||
friend inline bool operator<(const QStringRef &str, const ObjectTreeNode &obj)
|
||||
{ return str < QStringRef(&obj.name); }
|
||||
#endif
|
||||
inline bool isActive() const
|
||||
{ return obj || !children.isEmpty(); }
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue