ExpertiDict

C++ · Avançado · Inglês · Técnico

bit cast

bɪt kæstsubstantivo

Função std::bit_cast, do C++20, que reinterpreta os bits de um valor como outro tipo de mesmo tamanho, copiando-os. É a forma correta de fazer type punning sem comportamento indefinido.

Onde usar

Usada para ler os bits de um float ou converter entre tipos trivialmente copiáveis em código de baixo nível e serialização. Substitui o cast de ponteiros e o uso de union, que violam o aliasing.

Em código

float f = 1.0f;
auto bits = std::bit_cast<std::uint32_t>(f);
std::cout << std::hex << bits;  // 3f800000

Exemplos

Use bit cast to read the float's bits, not a pointer cast.

Use bit_cast para ler os bits do float, não um cast de ponteiro.

bit cast is constexpr, so it works at compile time too.

O bit_cast é constexpr, então funciona em tempo de compilação também.

Cuidado

Os dois tipos precisam ter o mesmo tamanho e ser trivialmente copiáveis, senão não compila.

Sinônimos

type punning seguro

Antônimos

reinterpret cast

Veja também

Todos os termos de C++