左值PropertyMap
左值PropertyMap 提供了訪問一個屬性對象的引用(取代 可讀PropertyMap 中所要求的 get() 函數要返回對象的拷貝)的接口。LvaluePropertyMap 可以是 可變的 或
不可變的。可變的左值PropertyMap返回一個引用,而不可變的左值PropertyMap則返回一個常量引用。
強化自
不可變的 property map 強化自 可讀PropertyMap,可變的 property map 強化自 讀寫PropertyMap.
符號
| PMap |
一個類型,符合 LvaluePropertyMap. |
| pmap |
類型 PMap 的一個對像 |
| key |
類型 boost::property_traits<PMap>::key_type 的一個類型 |
關聯類型
| Reference Type |
boost::property_traits<PMap>::reference |
引用類型,必須是 property map 的值類型的引用或常量引用
|
| Property Map Category
|
boost::property_traits<PMap>::category |
屬性的分類:可轉換為
boost::lvalue_property_map_tag 的類型
|
有效表達式
| 名字 |
表達式 |
返回類型 |
描述 |
| 訪問屬性值 |
pmap[key] |
對於可變的,為value_type&, 否則為 const value_type&.
|
獲得一個由 key 所標識的屬性的引用 |
概念檢查類
template <class PMap, class Key>
struct LvaluePropertyMapConcept
{
typedef typename property_traits<PMap>::category Category;
typedef boost::lvalue_property_map_tag LvalueTag;
typedef const typename property_traits<PMap>::value_type& const_reference;
void constraints() {
function_requires< ReadWritePropertyMapConcept<PMap, Key> >();
function_requires< ConvertibleConcept<Category, LvalueTag> >();
const_reference ref = pmap[k];
}
PMap pmap;
Key k;
};
template <class PMap, class Key>
struct Mutable_LvaluePropertyMapConcept
{
typedef typename property_traits<PMap>::category Category;
typedef boost::lvalue_property_map_tag LvalueTag;
typedef typename property_traits<PMap>::value_type& reference;
void constraints() {
function_requires< ReadWritePropertyMapConcept<PMap, Key> >();
function_requires<ConvertibleConcept<Category, LvalueTag> >();
reference ref = pmap[k];
}
PMap pmap;
Key k;
};
參見
Property map 概念