C++ Boost

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)