有没有办法检测基元参数是否是可变大小的
Is there a way to detect if a primitive argument is variable size?
我们使用内部序列化库。它使用模板化函数将变量写入流。
使用它时必须注意的一件事是确保使用特定的长度类型。你对int32_t等很好,但是如果你传递一个"int",你可能会发现它在int具有不同大小的系统上被解压缩。然后开箱失败。
如果有人尝试使用非固定大小的变量,有没有办法导致编译器错误?
如果有人尝试使用 非固定大小变量?
不。这完全是荒谬的,因为int32_t
很可能被定义为int
的typedef(而且经常是)。J.F. std::is_same<int, std::int32_t>::value == true
.你无法区分它们。
序列化int
的大小,并在要反序列化的平台上检查它。也就是说,检查sizeof int
是否与序列化数据的平台上的值相同。
相关文章:
- C++LDAP检查用户是否是特定组的成员
- 检查某些类型是否是模板类 std::optional 的实例化
- 将错误返回给调用方而不是立即在 C++ 中抛出错误是否是一种好的做法
- 如何检查模板专用化是否是基本模板的子类?
- 如何检查变量是否是C++中的地图?
- 继承是否是将一组模型参数传递给不同类的可行解决方案
- 移动 l 值参考参数是否是一种不好的做法?
- 检查传递给成员函数的参数是否是对象本身
- 如何检查模板参数是否是具有给定签名的可调用对象
- 在编译时检查模板参数是否是一种字符串
- 在声明中省略参数名称是否是一种好的做法
- 如何识别模板参数参数是否是模板内结构中另一个类的实例?C++
- 是否可以知道该参数是否是默认的
- 使用可变参数模板创建传递新对象的更安全方式是否是个好主意
- 如何检查模板参数是否是 2 的幂
- 有没有办法检测基元参数是否是可变大小的
- 如何测试类型是否是带有非类型参数的模板的专门化
- 下面"calling function"的术语,它们是否是指调用正在初始化其参数的函数的函数?
- C++11: 如何检查类型是否是"heterogeneous"非类型参数的给定类模板的实例化?
- 是否有将模板用作全局类型而不是参数的方法