LvaluePropertyMap(左辺値プロパティマップ)
LvaluePropertyMap(左辺値プロパティマップ)は、プロパティオブジェクトへの参照を取得するためのインターフェースを提供する。(ReadablePropertyMapが必要とするget()関数のようにオブジェクトの複製を返すことはない。) LvaluePropertyMapは、mutableであってもよいし、non-mutableであってもよい。mutableなLvaluePropertyMapは、参照を返すのに対し、mutableでない場合は、constの参照を返す。
下記のクラスの発展型
ReadablePropertyMap
(mutableでない場合) もしくは、ReadWritePropertyMap(mutableな場合)
記法
PMap |
LvaluePropertyMapのモデルである型 |
pmap |
PMap型のオブジェクト |
key |
boost::property_traits<PMap>::key_type型のオブジェクト |
関連型
参照型(Reference Type) |
boost::property_traits<PMap>::reference |
参照型。プロパティマップの値型への参照か、constな参照でなければならない。
|
プロパティマップカテゴリ
| boost::property_traits<PMap>::category |
プロパティのカテゴリ: boost::lvalue_property_map_tagに変換可能である。
|
妥当な表式
名前 | 表現 | 戻り値型 | 説明 |
プロパティ値へのアクセス |
pmap[key] |
value_type&(mutableな場合), const value_type&
(それ以外の場合)
|
keyにより識別されるプロパティへのリファレンスを取得する。
|
コンセプトチェッククラス(Concept Checking Class)
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 concepts