comparison DEPENDENCIES/generic/include/boost/range/size.hpp @ 101:c530137014c0

Update Boost headers (1.58.0)
author Chris Cannam
date Mon, 07 Sep 2015 11:12:49 +0100
parents 2665513ce2d3
children
comparison
equal deleted inserted replaced
100:793467b5e61c 101:c530137014c0
9 // 9 //
10 10
11 #ifndef BOOST_RANGE_SIZE_HPP 11 #ifndef BOOST_RANGE_SIZE_HPP
12 #define BOOST_RANGE_SIZE_HPP 12 #define BOOST_RANGE_SIZE_HPP
13 13
14 #if defined(_MSC_VER) && (_MSC_VER >= 1200) 14 #if defined(_MSC_VER)
15 # pragma once 15 # pragma once
16 #endif 16 #endif
17 17
18 #include <boost/range/config.hpp> 18 #include <boost/range/config.hpp>
19 #include <boost/range/begin.hpp> 19 #include <boost/range/begin.hpp>
20 #include <boost/range/end.hpp> 20 #include <boost/range/end.hpp>
21 #include <boost/range/size_type.hpp> 21 #include <boost/range/size_type.hpp>
22 #include <boost/range/detail/has_member_size.hpp>
22 #include <boost/assert.hpp> 23 #include <boost/assert.hpp>
24 #include <boost/cstdint.hpp>
25 #include <boost/utility.hpp>
23 26
24 namespace boost 27 namespace boost
25 { 28 {
26 namespace range_detail 29 namespace range_detail
27 { 30 {
31
28 template<class SinglePassRange> 32 template<class SinglePassRange>
29 inline BOOST_DEDUCED_TYPENAME range_size<const SinglePassRange>::type 33 inline typename ::boost::enable_if<
34 has_member_size<SinglePassRange>,
35 typename range_size<const SinglePassRange>::type
36 >::type
30 range_calculate_size(const SinglePassRange& rng) 37 range_calculate_size(const SinglePassRange& rng)
31 { 38 {
32 BOOST_ASSERT( (boost::end(rng) - boost::begin(rng)) >= 0 && 39 return rng.size();
33 "reachability invariant broken!" ); 40 }
34 return boost::end(rng) - boost::begin(rng); 41
42 template<class SinglePassRange>
43 inline typename disable_if<
44 has_member_size<SinglePassRange>,
45 typename range_size<const SinglePassRange>::type
46 >::type
47 range_calculate_size(const SinglePassRange& rng)
48 {
49 return std::distance(boost::begin(rng), boost::end(rng));
35 } 50 }
36 } 51 }
37 52
38 template<class SinglePassRange> 53 template<class SinglePassRange>
39 inline BOOST_DEDUCED_TYPENAME range_size<const SinglePassRange>::type 54 inline typename range_size<const SinglePassRange>::type
40 size(const SinglePassRange& rng) 55 size(const SinglePassRange& rng)
41 { 56 {
42 #if !BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x564)) && \ 57 #if !BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x564)) && \
43 !BOOST_WORKAROUND(__GNUC__, < 3) \ 58 !BOOST_WORKAROUND(__GNUC__, < 3) \
44 /**/ 59 /**/