intercambiando "endianness" de flotadores y dobles

Me gustaría cambiar el "endianness" de los valores flotantes y dobles, funciona bien, haciendo algo como:

float const v{1.f};

swap(reinterpret_cast<::std::uint32_t const&>(v));

¿Existe una mejor manera de hacer el intercambio, sin un yeso?

EDITAR:swap() es un contenedor de C ++ para las funciones integradas de gcc, no lo incluí aquí.

uint16_t __builtin_bswap16 (uint16_t x)
uint32_t __builtin_bswap32 (uint32_t x)
uint64_t __builtin_bswap64 (uint64_t x)

El intercambio de endianess es necesario para algunos formatos de datos, como CBOR.

Respuestas a la pregunta(1)

Su respuesta a la pregunta