## Writable Property Map(書き込み可能プロパティマップ)

Writable Property Map(書き込み可能プロパティマップ)は、`put()`関数を用いて、与えられたキーオブジェクトと関連付けられる値オブジェクトを設定することができる。

### 以下のクラスの発展型

Copy Constructible

### 表記

`PMap` | Writable Property Mapのモデル
`pmap` | `PMap`型のオブジェクト
`key` | `boost::property_traits<PMap>::key_type`型のオブジェクト
`val` | `boost::property_traits<PMap>::value_type`型のオブジェクト

### 関連型

値型(Value Type) | `boost::property_traits<PMap>::value_type` | プロパティの型
キー型(Key Type) | `boost::property_traits<PMap>::key_type` | プロパティを検索するときに用いられるキーオブジェクトの型。プロパティマップは、キー型についてテンプレート化されているかもしれない。この場合には、このtypedefは、`void`となるかもしれない。
プロパティマップカテゴリ(Property Map Category) | `boost::property_traits<PMap>::category` | プロパティのカテゴリ:`writable_property_map_tag`に変換可能な型.

### 妥当な表式

名称 | 表式 | 戻り値型 | 説明
--- | --- | --- | ---
Put Property Value[1] | `put(pmap, key, val)` | `void` | `k`に関連付けられたプロパティに`val`を設定する。

### 注釈

[1] `put()`関数は、もともと `set()`という名前であった。しかし、非標準の名前検索ルールを用いるコンパイラ(Microsoft Visual C++)を用いた場合には、`std::set`クラスとの名前の衝突が発生するのを避けるため、変更された。 以下の例は、この問題を実地に再現するためのものである。

    #include <set>
    using namespace std;
    namespace boost {
      void set() { }
    }

### コンセプトチェッククラス(Concept Checking Class)

      template <class PMap, class Key>
      struct WritablePropertyMapConcept
      {
        typedef typename property_traits<PMap>::key_type key_type;
        typedef typename property_traits<PMap>::category Category;
        typedef boost::writable_property_map_tag WritableTag;
        void constraints() {
          function_requires< ConvertibleConcept<Category, WritableTag> >();
          put(pmap, k, val);
        }
        PMap pmap;
        Key k;
        typename property_traits<PMap>::value_type val;
      };

### 参照

プロパティマップコンセプト(Property map concepts)

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