【发布时间】:2013-08-11 15:10:31
【问题描述】:
这是一个理论问题。假设有一些对象包含订阅这些对象事件的回调函数列表。现在我们要将这些对象存储在磁盘上。 std::function 是可序列化的吗?
【问题讨论】:
-
“实践”有点远:序列化原始函数指针和 FastDelegate 之类的东西可能可能,但你将有大量的修正。 codeproject.com/Articles/7150/… 展示了运行时函数指针实现的一些多样性。从操作系统和加载程序中添加更多复杂性——例如共享对象和 ASLR。相当的任务。我很想阅读低端的编译器+平台特定的技巧;还有可移植的解决方法(我们使用 enum->func LUTs 来处理静态方法)。
-
好吧,
std::function甚至无法与另一个std::function进行比较(operator==等人),因此序列化会很费力。
标签: c++ serialization theory std-function