3
std :: bit_cast พร้อม std :: array
ในการพูดคุยล่าสุดของเขา“ชนิดเล่นสำนวนในปัจจุบัน c ++”มู Doumler กล่าวว่าstd::bit_castไม่สามารถนำมาใช้เพื่อบิตโยนfloatลงไปunsigned char[4]เพราะอาร์เรย์แบบ C ไม่สามารถกลับมาจากฟังก์ชั่น เราควรใช้std::memcpyหรือรอจนกว่า C ++ 23 (หรือหลังจากนั้น) เมื่อสิ่งที่ชอบreinterpret_cast<unsigned char*>(&f)[i]จะกลายเป็นชัดเจน ใน C ++ 20 เราสามารถใช้std::arrayกับstd::bit_cast, float f = /* some value */; auto bits = std::bit_cast<std::array<unsigned char, sizeof(float)>>(f); แทนที่จะเป็นอาร์เรย์แบบ C เพื่อรับจำนวนไบต์float?
14
c++
c++20
type-punning