Max*_*ITT 5 c++ boost boost-serialization boost-interprocess boost-function
我实际上是尝试使用boost :: serialize序列化boost :: function,因为我想在boost :: interprocess :: message_queue中共享它.我只看到一种方法,它是使用非侵入式版本的boost :: serialize.
namespace boost {
namespace serialization {
template<class Archive>
void serialize(Archive & ar, boost::function<void()> & fct, const unsigned int version)
{
ar & fct.args;
ar & fct.arity;
ar & fct.vtable;
ar & fct.functor;
}
}
}
Run Code Online (Sandbox Code Playgroud)
我还需要序列化vtable和functor,我没有尝试过,我不确定它是否正常工作.
那么有没有办法以正确的方式序列化boost :: function?
谢谢.
这不可能立即实现。
我能想到有两个问题:
bindlambda 或通过 lambda 创建)两者都不是微不足道的,而且如果不检测代码就无法完成(想想反射/内省)。
这里您需要的是Command模式以及序列化这些命令的方法。
这要求两个进程都构建在一组通用命令之上(通用库似乎是个好主意),并且您为命令实现序列化和反序列化。
对于反序列化,您需要查找虚拟构造函数惯用语。
| 归档时间: |
|
| 查看次数: |
1157 次 |
| 最近记录: |