简介
put_get_helper是property_map的辅助类,自定义的property_map必须实现put_get_helper,也是property_map的基类,子类必须实现operator[]
结构
put_get_helper
是标记类,没有任何方法,针对put_get_helper有put,get函数模板,要求put_get_helper
的子类实现operator[]
template<class PropertyMap, class Reference, class K>
inline Reference get(const put_get_helper<Reference, PropertyMap>& pa, const K&k)
{
Reference v = static_cast<const PropertyMap&>(pa)[k];
return v
}
template<class PropertyMap, class Reference, class K, Class V>
inline void put(const put_get_helper<Reference, PropertyMap>& pa, K k, const V& v)
{
static_cast<const PropertyMap&>(pa)[k] = v;
}
属性traits
特性包含4点
- key_type
- value_type
- reference
- category
key_type
,value_type
:表示map中的key,value数据类型
reference
:表示值的引用类型
category
:表示map的属性,是否可读可写
相关类定义为
category
category主要由tag来表示,其支持的值用枚举ePropertyMapID
表示
enum ePropertyMapID { READABLE_PA, WRITABLE_PA,
READ_WRITE_PA, LVALUE_PA, OP_BRACKET_PA,
RAND_ACCESS_ITER_PA, LAST_PA };
tag对应的结构体类型关系为