最近有一个重构 configor 的想法,那就是把它的序列化操作改为流式调用。
之前,序列化一个对象的代码是这样的:
1 | User u{"John", 18}; // 用户自定义对象 u |
它实际的执行流程大概如下
1 | configor::value v = u; // 借助ADL转换为 configor::value 类型 |
执行时必须产生一个中间变量 value,但它的作用仅仅是为 serializer 提供标准化的类型,因为 serializer 不能接受任意类型为参数。
如果以流式调用的方式,伪代码可以是这样:
1 | json::istream{ u } >> json::ostream{ std::cout }; |