He alias para radianes y grados que el uso de flotación como el tipo de almacenamiento.
Cuando puedo convertir entre estas dos unidades veo la asamblea para promover los valores en dobles y, a continuación, volver a la flota al hacer las conversiones.
Q: ¿Cómo puedo asegurarme de que todas las operaciones y conversiones de estancia en los flotadores?
Mi Código:
using radians_f = boost::units::quantity<boost::units::si::plane_angle, float>;
using degrees_f = boost::units::quantity<boost::units::degree::plane_angle, float>;
degrees_f to_degrees(const radians_f& angle) { return static_cast<degrees_f>(angle); }
radians_f to_radians(const degrees_f& angle) { return static_cast<radians_f>(angle); }
Desde compilador explorer puedo ver las siguientes instrucciones de montaje: https://godbolt.org/z/Gnjr54dn6
cvtss2sd - Convierte un único punto flotante de precisión valor en el "convertir" a partir de" operando origen a un doble precisión de punto flotante de valor en el operando destino.
mulsd - se Multiplica la parte baja de doble precisión de punto flotante de valor en el segundo operando origen por la baja de doble precisión de punto flotante valor del primer operando origen.
cvtsd2ss - Convierte un doble precisión de punto flotante de valor en el "convertir" a partir de" operando origen a un solo punto flotante de precisión valor
PS: no me sorprendería si tengo definido mi alias o/y mis funciones de conversión de forma incorrecta.