summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to '3rdParty/Boost/src/boost/range/const_iterator.hpp')
-rw-r--r--3rdParty/Boost/src/boost/range/const_iterator.hpp69
1 files changed, 39 insertions, 30 deletions
diff --git a/3rdParty/Boost/src/boost/range/const_iterator.hpp b/3rdParty/Boost/src/boost/range/const_iterator.hpp
index 875320f..3413e59 100644
--- a/3rdParty/Boost/src/boost/range/const_iterator.hpp
+++ b/3rdParty/Boost/src/boost/range/const_iterator.hpp
@@ -11,18 +11,16 @@
#ifndef BOOST_RANGE_CONST_ITERATOR_HPP
#define BOOST_RANGE_CONST_ITERATOR_HPP
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
+#if defined(_MSC_VER)
# pragma once
#endif
#include <boost/range/config.hpp>
-#ifdef BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
-#include <boost/range/detail/const_iterator.hpp>
-#else
-
+#include <boost/range/range_fwd.hpp>
#include <boost/range/detail/extract_optional_type.hpp>
#include <boost/type_traits/remove_const.hpp>
+#include <boost/type_traits/remove_reference.hpp>
#include <cstddef>
#include <utility>
@@ -32,36 +30,47 @@ namespace boost
// default
//////////////////////////////////////////////////////////////////////////
- namespace range_detail {
- BOOST_RANGE_EXTRACT_OPTIONAL_TYPE( const_iterator )
- }
+ namespace range_detail
+ {
- template< typename C >
- struct range_const_iterator : range_detail::extract_const_iterator<C>
- {};
-
- //////////////////////////////////////////////////////////////////////////
- // pair
- //////////////////////////////////////////////////////////////////////////
+BOOST_RANGE_EXTRACT_OPTIONAL_TYPE( const_iterator )
- template< typename Iterator >
- struct range_const_iterator< std::pair<Iterator,Iterator> >
- {
- typedef Iterator type;
- };
-
- //////////////////////////////////////////////////////////////////////////
- // array
- //////////////////////////////////////////////////////////////////////////
+template< typename C >
+struct range_const_iterator
+ : extract_const_iterator<C>
+{};
- template< typename T, std::size_t sz >
- struct range_const_iterator< T[sz] >
- {
- typedef const T* type;
- };
+//////////////////////////////////////////////////////////////////////////
+// pair
+//////////////////////////////////////////////////////////////////////////
+
+template< typename Iterator >
+struct range_const_iterator<std::pair<Iterator,Iterator> >
+{
+ typedef Iterator type;
+};
+
+//////////////////////////////////////////////////////////////////////////
+// array
+//////////////////////////////////////////////////////////////////////////
+
+template< typename T, std::size_t sz >
+struct range_const_iterator< T[sz] >
+{
+ typedef const T* type;
+};
+
+ } // namespace range_detail
+
+template<typename C, typename Enabler=void>
+struct range_const_iterator
+ : range_detail::range_const_iterator<
+ BOOST_DEDUCED_TYPENAME remove_reference<C>::type
+ >
+{
+};
} // namespace boost
-#endif // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
#endif