OVH Cloud OVH Cloud

boost tribool

2 réponses
Avatar
Laurent Deniau
Dans la bib Boost::tribool, on trouve:

inline tribool operator==(tribool x, tribool y)
{
if (indeterminate(x) || indeterminate(y))
return indeterminate;
else
return x && y || !x && !y;
}

Ou &&, || et ! sont overloades pour tribool et font aussi des if-else

Est-ce qu'il y aurait une bonne raison pour ne pas avoir directement fait:

return tribool(x.value == y.value);

dans le else?

a+, ld.

2 réponses

Avatar
Jean-Marc Bourguet
Laurent Deniau writes:

Dans la bib Boost::tribool, on trouve:

inline tribool operator==(tribool x, tribool y)
{
if (indeterminate(x) || indeterminate(y))
return indeterminate;
else
return x && y || !x && !y;
}

Ou &&, || et ! sont overloades pour tribool et font aussi des if-else

Est-ce qu'il y aurait une bonne raison pour ne pas avoir directement fait:

return tribool(x.value == y.value);

dans le else?


Je n'ai pas regarde le code mais je n'en vois a priori pas. L'indetermine
defini un absorbant pour toutes les operations et a par cela c'est la
logique booleenne.

Peut-etre pour eviter d'avoir == friend ?

A+

--
Jean-Marc

Avatar
Laurent Deniau
Jean-Marc Bourguet wrote:
Laurent Deniau writes:


Dans la bib Boost::tribool, on trouve:

inline tribool operator==(tribool x, tribool y)
{
if (indeterminate(x) || indeterminate(y))
return indeterminate;
else
return x && y || !x && !y;
}

Ou &&, || et ! sont overloades pour tribool et font aussi des if-else

Est-ce qu'il y aurait une bonne raison pour ne pas avoir directement fait:

return tribool(x.value == y.value);

dans le else?



Je n'ai pas regarde le code mais je n'en vois a priori pas.


http://boost.cvs.sourceforge.net/boost/boost/boost/logic/tribool.hpp?view=markup

L'indetermine
defini un absorbant pour toutes les operations et a par cela c'est la
logique booleenne.

Peut-etre pour eviter d'avoir == friend ?


Ce n'est meme pas la peine, value est un membre public et !, &&, ||, !=
et == des overloads externes mais qui en dehors de !, n'utilise pas value.

a+, ld.