diff options
Diffstat (limited to 'boost/convert/detail/range.hpp')
-rw-r--r-- | boost/convert/detail/range.hpp | 29 |
1 files changed, 15 insertions, 14 deletions
diff --git a/boost/convert/detail/range.hpp b/boost/convert/detail/range.hpp index 345321039e..82d105f949 100644 --- a/boost/convert/detail/range.hpp +++ b/boost/convert/detail/range.hpp @@ -14,7 +14,7 @@ namespace boost { namespace cnv { namespace detail { - template<typename T, bool is_class> struct is_range : mpl::false_ {}; + template<typename T, bool is_class> struct is_range : std::false_type {}; template<typename T> struct is_range<T, /*is_class=*/true> { @@ -24,7 +24,7 @@ namespace boost { namespace cnv static bool const value = has_begin<T>::value && has_end<T>::value; }; } - template<typename T> struct is_range : detail::is_range<typename remove_const<T>::type, boost::is_class<T>::value> {}; + template<typename T> struct is_range : detail::is_range<typename boost::remove_const<T>::type, boost::is_class<T>::value> {}; template<typename T, typename enable =void> struct range; template<typename T, typename enable =void> struct iterator; @@ -38,9 +38,9 @@ namespace boost { namespace cnv template<typename T> struct iterator<T*, void> { - typedef typename remove_const<T>::type value_type; - typedef T* type; - typedef value_type const* const_type; + typedef typename boost::remove_const<T>::type value_type; + typedef T* type; + typedef value_type const* const_type; }; template<typename T> struct range_base @@ -74,20 +74,21 @@ namespace boost { namespace cnv range (T& r) : base_type(r.begin(), r.end()) {} - iterator end () { return base_type::end_; } - const_iterator end () const { return base_type::end_; } - sentry_type sentry () const { return base_type::end_; } - bool empty () const { return base_type::begin_ == base_type::end_; } + iterator end () { return base_type::end_; } + const_iterator end () const { return base_type::end_; } + sentry_type sentry () const { return base_type::end_; } + std::size_t size () const { return base_type::end_ - base_type::begin_; } + bool empty () const { return base_type::begin_ == base_type::end_; } }; template<typename T> struct range<T*, typename enable_if<cnv::is_char<T> >::type> : public range_base<T*> { - typedef range this_type; - typedef range_base<T*> base_type; - typedef typename remove_const<T>::type value_type; - typedef T* iterator; - typedef value_type const* const_iterator; + using this_type = range; + using base_type = range_base<T*>; + using value_type = typename boost::remove_const<T>::type; + using iterator = T*; + using const_iterator = value_type const*; struct sentry_type { |