[Cette question est liée mais n'est pas la même chose que ce un.]
Mon compilateur signale implicitement de la conversion ou de coulée de certains types bool alors que les conversions explicites ne produisent pas un avertissement:
long t = 0;
bool b = false;
b = t; // performance warning: forcing long to bool
b = (bool)t; // performance warning
b = bool( t ); // performance warning
b = static_cast< bool >( t ); // performance warning
b = t ? true : false; // ok, no warning
b = t != 0; // ok
b = !!t; // ok
C'est avec Visual C++ 2008 mais je soupçonne que d'autres compilateurs peuvent avoir les mêmes mises en garde.
Donc ma question est: quelle est la performance de l'implication de coulée/conversion d' bool
? N'conversion explicite de meilleures performances dans certaines circonstances (par exemple, pour certaines architectures cibles ou processeurs)? N'conversion implicite en quelque sorte confondre l'optimiseur?
Microsoft explication de leur avertissement n'est pas particulièrement utile. Ils sous-entendent qu'il y a une bonne raison, mais ils ne l'explique pas.