[Development] Should QVariant be doing fuzzy comparisons on doubles?
Olivier Goffart
olivier at woboq.com
Mon Sep 26 10:17:45 CEST 2016
On Montag, 26. September 2016 09:55:13 CEST Jędrzej Nowacki wrote:
> On fredag 23. september 2016 11.22.08 CEST Olivier Goffart wrote:
> > template<class T>
> > auto registerEqualityOperator()
> >
> > -> decltype(std::declval<T>() == std::declval<T>())
>
> I have tried it already. Sadly it breaks terribly in case of
> private/protected operators.
It does not break. It will simply not be registered if it's private.
(It is a C++11 expression SFINAE in a decltype, not a &T::operator==
substitution)
> It doesn't solve the problem, because types
> may got converted just to satisfy operator== type requirements.
That is indeed more of a problem. I think we can live with that.
> In addition it causes small perf problems.
Are you talking about the registration cost? If we register all at the same
time, I'd say that's negligible.
> So QVariant::operator== is broken and it is not fixable without _major_
> breakages.
Yes that's true.
--
Olivier
Woboq - Qt services and support - https://woboq.com - https://code.woboq.org
More information about the Development
mailing list