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