Yaptığı son konuşma ise “Modern C Tipi cinaslı ++” Timur Doumler söyledi o std::bit_castbit atmak kullanılamaz floatbir içine unsigned char[4]C tarzı diziler bir işlev döndürülen edilemez çünkü. std::memcpyC ++ 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::arrayile 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.