-// (C) Copyright Jeremy Siek 1999-2001. Permission to copy, use, modify,
-// sell and distribute this software is granted provided this
-// copyright notice appears in all copies. This software is provided
-// "as is" without express or implied warranty, and with no claim as
-// to its suitability for any purpose.
+// (C) Copyright Jeremy Siek 1999-2001.
+// Distributed under the Boost Software License, Version 1.0. (See
+// accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+
+// See http://www.boost.org/libs/property_map for documentation.
#ifndef BOOST_PROPERTY_MAP_HPP
#define BOOST_PROPERTY_MAP_HPP
#include <cassert>
-#include <iterator>
#include <boost/config.hpp>
#include <boost/pending/cstddef.hpp>
+#include <boost/detail/iterator.hpp>
#include <boost/concept_check.hpp>
#include <boost/concept_archetype.hpp>
};
template <typename K, typename V>
const typename readable_property_map_archetype<K,V>::reference&
- get(const readable_property_map_archetype<K,V>&, const K&) {
+ get(const readable_property_map_archetype<K,V>&,
+ const typename readable_property_map_archetype<K,V>::key_type&)
+ {
typedef typename readable_property_map_archetype<K,V>::reference R;
return static_object<R>::get();
}
typedef writable_property_map_tag category;
};
template <typename K, typename V>
- void put(const writable_property_map_archetype<K,V>&, const K&, const V&) { }
+ void put(const writable_property_map_archetype<K,V>&,
+ const typename writable_property_map_archetype<K,V>::key_type&,
+ const typename writable_property_map_archetype<K,V>::value_type&) { }
template <class PMap, class Key>
typedef boost::lvalue_property_map_tag category;
inline safe_iterator_property_map(
- RandomAccessIterator first = RandomAccessIterator(),
- std::size_t n = 0,
+ RandomAccessIterator first,
+ std::size_t n_ = 0,
const IndexMap& _id = IndexMap() )
- : iter(first), n(n), index(_id) { }
+ : iter(first), n(n_), index(_id) { }
+ inline safe_iterator_property_map() { }
inline R operator[](key_type v) const {
assert(get(index, v) < n);
return *(iter + get(index, v)) ;
template <class RAIter, class ID>
inline safe_iterator_property_map<
RAIter, ID,
- typename std::iterator_traits<RAIter>::value_type,
- typename std::iterator_traits<RAIter>::reference>
+ typename boost::detail::iterator_traits<RAIter>::value_type,
+ typename boost::detail::iterator_traits<RAIter>::reference>
make_safe_iterator_property_map(RAIter iter, std::size_t n, ID id) {
function_requires< RandomAccessIteratorConcept<RAIter> >();
typedef safe_iterator_property_map<
RAIter, ID,
- typename std::iterator_traits<RAIter>::value_type,
- typename std::iterator_traits<RAIter>::reference> PA;
+ typename boost::detail::iterator_traits<RAIter>::value_type,
+ typename boost::detail::iterator_traits<RAIter>::reference> PA;
return PA(iter, n, id);
}
#endif