yaLanTingLibs
|
trivial_view<T>
是一个平凡结构体的视图,在类型系统上等价于T
。
更多...
#include <struct_pack_doc.hpp>
Public 类型 | |
using | value_type = T |
trivial_view 指向的对象的类型,value_type 必须是一个平凡的结构体 | |
Public 成员函数 | |
trivial_view (const T *t) | |
构造一个指向对象t 的trivial_view 更多... | |
trivial_view (const T &t) | |
构造一个指向对象t 的trivial_view 更多... | |
trivial_view (const trivial_view &)=default | |
trivial_view () | |
构造一个指向空对象的trivial_view | |
trivial_view & | operator= (const trivial_view &)=default |
void | set (const T &obj) |
设置trivial_view 指向的对象 更多... | |
const T & | get () const |
返回trivial_vie w指向的对象T 的常引用 更多... | |
const T * | operator-> () const |
允许trivial_view 通过运算符-> 访问指向对象T 更多... | |
trivial_view<T>
是一个平凡结构体的视图,在类型系统上等价于T
。
其作用是减少赋值/反序列化过程中的内存拷贝。 例如,假如有一个巨大的结构体Data
假设有协议:
可以发现,构造/反序列化时拷贝代价很大。 如何解决?我们可以改用视图:
trivial_view<T>
在类型系统中等价于T
,因此,序列化其中一者再反序列化到另外一者是合法的。
T | trivial_view 指向的类型,T 必须是一个平凡的结构体 |
struct_pack::trivial_view< T >::trivial_view | ( | const T * | t | ) |
构造一个指向对象t
的trivial_view
t |
struct_pack::trivial_view< T >::trivial_view | ( | const T & | t | ) |
构造一个指向对象t
的trivial_view
t |
const T& struct_pack::trivial_view< T >::get | ( | ) | const |
返回trivial_vie
w指向的对象T
的常引用
const T* struct_pack::trivial_view< T >::operator-> | ( | ) | const |
允许trivial_view
通过运算符->
访问指向对象T
void struct_pack::trivial_view< T >::set | ( | const T & | obj | ) |
设置trivial_view
指向的对象
obj |