从 std::vector<uint8_t> 转换为 std::vector<char> 而不犯重罪

时间:2021-05-06 07:43:33

标签: c++ vector

我有一个生成 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/称我为重罪犯。我事先承认这一点。我也对涉及复制向量的明显正确答案不感兴趣,显然试图避免这里的复制。

0 个答案:

没有答案
相关问题