用于打包数据的std方法

时间:2016-06-27 23:30:07

标签: c++ templates std

假设我有一个我想要打包的结构(因为我正在与另一个程序进行通信,所以只需打包所有数据就可以保证它的网格化更简单。)

gcc中打包结构,你可以这样做:

struct __attribute((packed)) Mine { /* Members here */ };

std库中是否定义了模板来执行此操作?

我问的原因是因为有std::aligned_storage,这对于事物的对齐结束非常有帮助,并且在打包数据时有类似的事情似乎是合乎逻辑的。

这样存在吗?

2 个答案:

答案 0 :(得分:2)

不,它不存在。 Standard明确指出struct中的打包字段是实现定义的。

它还提到对于位字段,位从一个位字段流向下一个字段的方式也是实现定义的(我得到你也使用位字段)。抱歉,您必须为您的编译器明确编写代码。

答案 1 :(得分:0)

虽然很难证明是消极的,但我确信答案是否定的。

从根本上说,std几乎完全可以在相当明确定义的C ++中实现,只需要偶尔需要有限的编译器协调(例如std::size_tsizeof表达式的类型)。您描述的功能与此概念完全不一致。