|
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_view指向的对象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_view指向的对象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 |