обмен «порядком байтов» чисел с плавающей и двойной

Я хотел бы переключить «порядок байтов» значений типа float и double, все работает нормально, выполнив что-то вроде:

float const v{1.f};

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

Существует ли лучший способ сделать обмен без приведения?

РЕДАКТИРОВАТЬ:swap() является оберткой C ++ для встроенных функций gcc, я не включал ее здесь

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

Подстановка порядка байтов необходима для некоторых форматов данных, таких как CBOR.

Ответы на вопрос(1)

Ваш ответ на вопрос