有没有办法检测基元参数是否是可变大小的

Is there a way to detect if a primitive argument is variable size?

本文关键字:是否是 参数 检测 有没有      更新时间:2023-10-16

我们使用内部序列化库。它使用模板化函数将变量写入流。

使用它时必须注意的一件事是确保使用特定的长度类型。你对int32_t等很好,但是如果你传递一个"int",你可能会发现它在int具有不同大小的系统上被解压缩。然后开箱失败。

如果有人尝试使用非固定大小的变量,有没有办法导致编译器错误?

如果有人尝试使用 非固定大小变量?

不。这完全是荒谬的,因为int32_t很可能被定义为int的typedef(而且经常是)。J.F. std::is_same<int, std::int32_t>::value == true .你无法区分它们。

序列化int的大小,并在要反序列化的平台上检查它。也就是说,检查sizeof int是否与序列化数据的平台上的值相同。