Yaptığı son konuşma ise “Modern C Tipi cinaslı ++” Timur Doumler söyledi o std::bit_cast
bit atmak kullanılamaz float
bir içine unsigned char[4]
C tarzı diziler bir işlev döndürülen edilemez çünkü. std::memcpy
C ++ 23 (veya üstü) gibi bir şey reinterpret_cast<unsigned char*>(&f)[i]
iyi tanımlanıncaya kadar kullanmalı veya beklemeliyiz .
C ++ 20'de bir std::array
ile kullanabilir miyiz std::bit_cast
,
float f = /* some value */;
auto bits = std::bit_cast<std::array<unsigned char, sizeof(float)>>(f);
yerine C-tarzı bir dizi bayt almak için float
?
struct X { unsigned char elems[5]; };
kuralı karşıladığınızı unutmayın . Kesinlikle 4 adede kadar elemanla listeye başlatılabilir. Bu olabilir Ayrıca liste başlatıldı 5 elemanları ile olmak. Herhangi bir standart kütüphane uygulayıcının bunu yapmak için insanlardan yeterince nefret ettiğini düşünmüyorum, ancak teknik olarak uyumlu olduğunu düşünüyorum.