Я наткнулся на функцию, которая я считаю ненужной, и вообще меня пугает:
float coerceToFloat(double x) {
volatile float y = static_cast<float>(x);
return y;
}
Который затем используется так:
// double x
double y = coerceToFloat(x);
Отличается ли это когда-нибудь от простого?
double y = static_cast<float>(x);
Намерение, кажется, состоит в том, чтобы просто лишить двойного до единой точности. Пахнет чем-то написанным из-за крайней паранойи.