我有一个生成 std::vector<uint8_t>
的库,我有一个消耗 std::vector<char>
的 API。我发现自己需要从 A 点到达 B 点。
我现在用来做这件事的那条线被大多数人认为是“糟糕的”。
std::vector<std::uint8_t> in {...};
std::vector<char> out;
out = reinterpret_cast<std::vector<char>&&>(in);
但它产生 reasonable code,并且作为一个实际问题,尽管直接违反了严格的别名,但它在任何地方都有效。我想知道是否有人有一种干净的方法来做到这一点,既不会激怒语言律师,又会让我受到编译器之神的青睐。
我知道这段代码很糟糕,请不要告诉我这段代码很糟糕/UB/称我为重罪犯。我事先承认这一点。我也对涉及复制向量的明显正确答案不感兴趣,显然试图避免这里的复制。