## 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

Copyright © 2000 | Jeremy Siek, Univ.of Notre Dame (jsiek@lsc.nd.edu)