Workaround MSVC2008 build failure after switching to std::upper_bound
QPostEventList is kept sorted by priority; std::upper_bound is used to insert a QPostEvent in the right place in the list. Turns out that MSVC2008 is a bit too picky and tries to see if the list is actually ordered. This causes a build failure as there is no operator< defined between two QPostEvents (in fact, an integer -- the priority -- is passed to std::upper_bound). Work around this issue by defining operator< between two QPostEvents. Change-Id: Ie3562dd0cc7253e25fc988b25d566d9d9e9fe62b Reviewed-by: Andreas Holzammer <andreas.holzammer@kdab.com> Reviewed-by: Marc Mutz <marc.mutz@kdab.com> Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>bb10
parent
0e3b1f4b48
commit
60e2ec9db4
|
|
@ -86,13 +86,9 @@ public:
|
|||
};
|
||||
Q_DECLARE_TYPEINFO(QPostEvent, Q_MOVABLE_TYPE);
|
||||
|
||||
inline bool operator<(int priority, const QPostEvent &pe)
|
||||
inline bool operator<(const QPostEvent &first, const QPostEvent &second)
|
||||
{
|
||||
return pe.priority < priority;
|
||||
}
|
||||
inline bool operator<(const QPostEvent &pe, int priority)
|
||||
{
|
||||
return priority < pe.priority;
|
||||
return first.priority > second.priority;
|
||||
}
|
||||
|
||||
// This class holds the list of posted events.
|
||||
|
|
@ -126,7 +122,7 @@ public:
|
|||
// insert event in descending priority order, using upper
|
||||
// bound for a given priority (to ensure proper ordering
|
||||
// of events with the same priority)
|
||||
QPostEventList::iterator at = std::upper_bound(begin() + insertionOffset, end(), priority);
|
||||
QPostEventList::iterator at = std::upper_bound(begin() + insertionOffset, end(), ev);
|
||||
insert(at, ev);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue