CASM
AClustersApproachtoStatisticalMechanics
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Modules
unique_cloneable_map.hh
Go to the documentation of this file.
1 #ifndef CASM_unique_cloneable_map_HH
2 #define CASM_unique_cloneable_map_HH
3 
6 
7 namespace notstd {
8 
9  template<typename MapType>
11 
12  typedef typename MapType::iterator::reference reference;
13  typedef typename MapType::iterator::value_type::second_type::reference result_type;
14 
16 
17  result_type operator()(reference pair) const {
18  return *(pair.second);
19  }
20 
21  };
22 
23  template<typename MapType>
25 
26  typedef typename MapType::const_iterator::reference reference;
27  typedef const typename MapType::const_iterator::value_type::second_type::reference result_type;
28 
30 
31  result_type operator()(reference pair) const {
32  return *(pair.second);
33  }
34 
35  };
36 
37 
38 
41  template<typename KeyType, typename ValueType, typename MapType = std::map<KeyType, cloneable_ptr<ValueType> > >
42  using unique_cloneable_map = unique_map<KeyType,
43  ValueType,
44  MapType,
45  GetSecondDereferenced<MapType>,
47 
48 
49 }
50 
51 #endif
52 
unique_map< KeyType, ValueType, MapType, GetSecondDereferenced< MapType >, GetSecondDereferencedConst< MapType > > unique_cloneable_map
Enable use of unique_map of cloneable_ptr via references to ValueType. ...
MapType::iterator::reference reference
MapType::const_iterator::reference reference
result_type operator()(reference pair) const
Non-std smart pointer classes and functions.
result_type operator()(reference pair) const
const MapType::const_iterator::value_type::second_type::reference result_type
MapType::iterator::value_type::second_type::reference result_type