nark 序列化与 C++14 的新特性

nark C++ 序列化库 尽管 性能优异,但是C++14以前,在某些情况下想要完全发挥性能优势,需要额外声明 DATA_IO_DUMP_RAW_MEM

只是因为受制于 C++ 的语法限制,无法实现自动推导所有的 Dumpable 对象——可以 memcpy 的对象:

如果使用 NativeDataInput/NativeDataOutput, 只能自动推断出 A, B 可以直接 memcpy,无法推断出 C 也可以 memcpy,当然,任何情况下 D 肯定都是无法 memcpy 的。

C++14 有了 return type deduction, struct C memcpy 的问题就解决了,详细内容,请看代码

这其中,发现了 gcc-4.8 的 Bug 59766 c++1y: declaring friend function with ‘auto’ return …,还好,这个 bug 可以 这样 Workaround

新版的序列化库仅使用C++11语法就能实现该功能(自动推导所有的 Dumpable 对象)。通过利用 C++11 的 auto func(ArgList) -> Expression 语法,当 func 为成员函数时,Expression 中可以包含数据成员和对成员函数的调用。从而,也就不需要这个 Work Around。

作者:
该日志由 rockeet 于2014年08月26日发表在C++分类下, 你可以发表评论,并在保留原文地址及作者的情况下引用到你的网站或博客。
转载请注明: nark 序列化与 C++14 的新特性
标签:
【上一篇】
【下一篇】

您可能感兴趣的文章:

发表评论

您必须 登录 后才能发表评论。