summaryrefslogtreecommitdiff
path: root/boost/range/counting_range.hpp
diff options
context:
space:
mode:
Diffstat (limited to 'boost/range/counting_range.hpp')
-rw-r--r--boost/range/counting_range.hpp40
1 files changed, 25 insertions, 15 deletions
diff --git a/boost/range/counting_range.hpp b/boost/range/counting_range.hpp
index b8e4e3a7e6..d886a2133f 100644
--- a/boost/range/counting_range.hpp
+++ b/boost/range/counting_range.hpp
@@ -17,11 +17,11 @@
#include <boost/range/iterator_range_core.hpp>
#include <boost/range/value_type.hpp>
+#include <boost/range/iterator.hpp>
#include <boost/iterator/counting_iterator.hpp>
namespace boost
{
-
template<class Value>
inline iterator_range<counting_iterator<Value> >
counting_range(Value first, Value last)
@@ -33,29 +33,39 @@ namespace boost
}
template<class Range>
- inline iterator_range<counting_iterator<BOOST_DEDUCED_TYPENAME range_value<const Range>::type> >
+ inline iterator_range<
+ counting_iterator<
+ BOOST_DEDUCED_TYPENAME range_iterator<const Range>::type
+ >
+ >
counting_range(const Range& rng)
{
- typedef counting_iterator<BOOST_DEDUCED_TYPENAME range_value<const Range>::type> counting_iterator_t;
+ typedef counting_iterator<
+ BOOST_DEDUCED_TYPENAME range_iterator<const Range>::type
+ > counting_iterator_t;
+
typedef iterator_range<counting_iterator_t> result_t;
- return boost::empty(rng)
- ? result_t()
- : result_t(
- counting_iterator_t(*boost::begin(rng)),
- counting_iterator_t(*boost::prior(boost::end(rng))));
+
+ return result_t(counting_iterator_t(boost::begin(rng)),
+ counting_iterator_t(boost::end(rng)));
}
template<class Range>
- inline iterator_range<counting_iterator<BOOST_DEDUCED_TYPENAME range_value<Range>::type> >
+ inline iterator_range<
+ counting_iterator<
+ BOOST_DEDUCED_TYPENAME range_iterator<Range>::type
+ >
+ >
counting_range(Range& rng)
{
- typedef counting_iterator<BOOST_DEDUCED_TYPENAME range_value<Range>::type> counting_iterator_t;
+ typedef counting_iterator<
+ BOOST_DEDUCED_TYPENAME range_iterator<Range>::type
+ > counting_iterator_t;
+
typedef iterator_range<counting_iterator_t> result_t;
- return boost::empty(rng)
- ? result_t()
- : result_t(
- counting_iterator_t(*boost::begin(rng)),
- counting_iterator_t(*boost::prior(boost::end(rng))));
+
+ return result_t(counting_iterator_t(boost::begin(rng)),
+ counting_iterator_t(boost::end(rng)));
}
} // namespace boost