//=======================================================================
-// Copyright 2001 Jeremy G. Siek, Andrew Lumsdaine, Lie-Quan Lee,
+// Copyright 2001 Jeremy G. Siek, Andrew Lumsdaine, Lie-Quan Lee,
//
// Distributed under the Boost Software License, Version 1.0. (See
// accompanying file LICENSE_1_0.txt or copy at
#error This examples requires a compiler that provides a working std::iterator_traits
#endif
-
namespace foo
{
- using namespace boost;
- template < class RandomAccessIterator, class IndexMap >
- class iterator_property_map:public boost::put_get_helper <
- typename std::iterator_traits < RandomAccessIterator >::reference,
- iterator_property_map < RandomAccessIterator, IndexMap > >
- {
- public:
+using namespace boost;
+template < class RandomAccessIterator, class IndexMap >
+class iterator_property_map
+: public boost::put_get_helper<
+ typename std::iterator_traits< RandomAccessIterator >::reference,
+ iterator_property_map< RandomAccessIterator, IndexMap > >
+{
+public:
typedef std::ptrdiff_t key_type;
- typedef typename std::iterator_traits < RandomAccessIterator >::value_type
- value_type;
- typedef typename std::iterator_traits < RandomAccessIterator >::reference
- reference;
+ typedef typename std::iterator_traits< RandomAccessIterator >::value_type
+ value_type;
+ typedef typename std::iterator_traits< RandomAccessIterator >::reference
+ reference;
typedef boost::lvalue_property_map_tag category;
- iterator_property_map(RandomAccessIterator cc = RandomAccessIterator(),
- const IndexMap & _id =
- IndexMap()):iter(cc), index(_id)
+ iterator_property_map(RandomAccessIterator cc = RandomAccessIterator(),
+ const IndexMap& _id = IndexMap())
+ : iter(cc), index(_id)
{
}
- reference operator[] (std::ptrdiff_t v) const
+ reference operator[](std::ptrdiff_t v) const
{
- return *(iter + get(index, v));
+ return *(iter + get(index, v));
}
- protected:
- RandomAccessIterator iter;
+
+protected:
+ RandomAccessIterator iter;
IndexMap index;
- };
+};
}
-int
-main()
+int main()
{
- typedef std::vector < std::string > vec_t;
- typedef foo::iterator_property_map < vec_t::iterator,
- boost::identity_property_map > pmap_t;
- using namespace boost;
- BOOST_CONCEPT_ASSERT(( Mutable_LvaluePropertyMapConcept<pmap_t, int> ));
- return 0;
+ typedef std::vector< std::string > vec_t;
+ typedef foo::iterator_property_map< vec_t::iterator,
+ boost::identity_property_map >
+ pmap_t;
+ using namespace boost;
+ BOOST_CONCEPT_ASSERT((Mutable_LvaluePropertyMapConcept< pmap_t, int >));
+ return 0;
}