Если вы хотите узнать, является ли ваш float
32-битным типом IEEE, отметьте std::numeric_limits<float>::is_iec559
. Это константа времени компиляции, а не функция.
Если вы хотите быть более пуленепробиваемым, также отметьте std::numeric_limits<float>::digits
, чтобы убедиться, что они не крадутся, используя стандарт двойной точности IEEE для float
. Должно быть 24.
Когда дело доходит до long double
, более важно проверить digits
, потому что есть пара форматов IEEE, которые могут быть разумными: 128 бит (цифры = 113) или 80 бит (цифры = 64).
Было бы непрактично иметь float32_t
как таковой, потому что вы обычно хотите использовать аппаратное обеспечение с плавающей запятой, если оно доступно, и не прибегать к программной реализации.