[Этот вопрос относится, но не совпадает с к этому .]
Мой компилятор предупреждает о неявном преобразовании или приведении определенных типов к типу bool, тогда как явные преобразования не выдают предупреждение:
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
Это с Visual C ++ 2008, но я подозреваю, что другие компиляторы могут иметь похожие предупреждения.
Итак, мой вопрос: каково влияние приведения / преобразования на bool
на производительность? Имеет ли явное преобразование лучшую производительность в некоторых обстоятельствах (например, для определенных целевых архитектур или процессоров)? Неявное преобразование каким-то образом сбивает с толку оптимизатор?
Microsoft объяснение их предупреждения не особенно полезно. Они подразумевают, что есть веская причина, но не объясняют ее.