3
// Copyright Thorsten Ottosen 2003-2004. Use, modification and
4
// distribution is subject to the Boost Software License, Version
5
// 1.0. (See accompanying file LICENSE_1_0.txt or copy at
6
// http://www.boost.org/LICENSE_1_0.txt)
8
// For more information, see http://www.boost.org/libs/range/
11
#ifndef BOOST_RANGE_DETAIL_SIZE_TYPE_HPP
12
#define BOOST_RANGE_DETAIL_SIZE_TYPE_HPP
14
#include <boost/range/detail/common.hpp>
16
//////////////////////////////////////////////////////////////////////////////
17
// missing partial specialization workaround.
18
//////////////////////////////////////////////////////////////////////////////
22
namespace range_detail
24
template< typename T >
25
struct range_size_type_;
28
struct range_size_type_<std_container_>
30
template< typename C >
33
typedef BOOST_RANGE_DEDUCED_TYPENAME C::size_type type;
38
struct range_size_type_<std_pair_>
40
template< typename P >
43
typedef std::size_t type;
48
struct range_size_type_<array_>
50
template< typename A >
53
typedef std::size_t type;
60
template< typename C >
63
typedef typename range_detail::range<C>::type c_type;
65
typedef typename range_detail::range_size_type_<c_type>::BOOST_NESTED_TEMPLATE pts<C>::type type;