小编欢乐的*_*aox的帖子

通过网络、跨平台传递 std::variant 是否安全

std::variant 是 union 的替代品。

但union可以通过网络安全地在另一个平台(不同的编译器或arch)接收。std::variant 可以这样做吗?

比如我有两台机器A和B。A是windows,MSVC 19.4。B 是 Linux、gcc(或其他编译器,例如 MSVC 17)。我在A(或B)下编译代码:

std::variant<int, double> v = 1; // holds int.
f.write(&v, sizeof(v));
Run Code Online (Sandbox Code Playgroud)

B 可以使用以下代码从同一文件中读取正确的值吗?

std::variant<int, double> v;
f.read(&v, sizeof(v));
Run Code Online (Sandbox Code Playgroud)

如果 std::variant 无法安全地通过网络传递。有图书馆提供吗?增强::变体?或者也许创建一个像 std::variant 一样的自定义实现?

c++ compatibility std-variant

1
推荐指数
1
解决办法
462
查看次数

标签 统计

c++ ×1

compatibility ×1

std-variant ×1