bdo*_*lan 6 c++ serialization boost shared-memory boost-variant
boost :: variant声称它是一个值类型.这是否意味着简单地写出boost :: variant的原始表示并稍后加载它是安全的,只要它只包含POD类型?假设它将由相同编译器编译的代码和相同版本的boost在同一架构上重新加载.
另外,(可能)等效地,可以在共享内存中使用boost :: variant吗?
关于序列化:它应该工作,是的.但是为什么不使用boost::variant访问机制来写出变体中包含的实际类型?
struct variant_serializer : boost::static_visitor<void> {
template <typename T>
typename boost::enable_if< boost::is_pod<T>, void>::type
operator()( const T & t ) const {
// ... serialize here, e.g.
std::cout << t;
}
};
int main() {
const boost::variant<int,char,float,double> v( '1' );
variant_serializer s;
boost::apply_visitor( s, v );
return 0;
}
Run Code Online (Sandbox Code Playgroud)
关于共享内存:boost::variant不执行堆分配,因此您可以将它放入共享内存中int,当然,假设正确同步.
毋庸置疑,如上所述,只有变量只能包含POD类型时,上述内容才有效.
| 归档时间: |
|
| 查看次数: |
3314 次 |
| 最近记录: |