タグ付けされた質問 「reinterpret-cast」


2
タイプ・パンニング・テーマのバリエーション:インプレース・トリビアル・コンストラクション
これはかなり一般的なテーマであることは知っていますが、典型的なUBを見つけるのは簡単ですが、今のところこの亜種は見つかりませんでした。 そこで、実際のデータのコピーを避けながら、Pixelオブジェクトを正式に紹介しようとしています。 これは有効ですか? struct Pixel { uint8_t red; uint8_t green; uint8_t blue; uint8_t alpha; }; static_assert(std::is_trivial_v<Pixel>); Pixel* promote(std::byte* data, std::size_t count) { Pixel * const result = reinterpret_cast<Pixel*>(data); while (count-- > 0) { new (data) Pixel{ std::to_integer<uint8_t>(data[0]), std::to_integer<uint8_t>(data[1]), std::to_integer<uint8_t>(data[2]), std::to_integer<uint8_t>(data[3]) }; data += sizeof(Pixel); } return result; // throw in …
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.