MPL11
 All Classes Namespaces Files Typedefs Macros Groups Pages
std_index_sequence.hpp
Go to the documentation of this file.
1 
12 #ifndef BOOST_MPL11_DETAIL_STD_INDEX_SEQUENCE_HPP
13 #define BOOST_MPL11_DETAIL_STD_INDEX_SEQUENCE_HPP
14 
16 
17 
18 namespace boost { namespace mpl11 { namespace detail {
24  template <std_size_t ...I>
26 
27  namespace index_sequence_detail {
28  template <typename L, typename R>
29  struct concat;
30 
31  template <std_size_t ...I, std_size_t ...J>
32  struct concat<std_index_sequence<I...>, std_index_sequence<J...>> {
33  using type = std_index_sequence<I..., (sizeof...(I) + J)...>;
34  };
35  } // end namespace index_sequence_detail
36 
42  template <std_size_t n>
44  using type = typename index_sequence_detail::concat<
45  typename make_std_index_sequence<n / 2>::type,
46  typename make_std_index_sequence<n - n / 2>::type
47  >::type;
48  };
49 
50  template <>
51  struct make_std_index_sequence<0> {
52  using type = std_index_sequence<>;
53  };
54 
55  template <>
56  struct make_std_index_sequence<1> {
57  using type = std_index_sequence<0>;
58  };
59 }}} // end namespace boost::mpl11::detail
60 
61 #endif // !BOOST_MPL11_DETAIL_STD_INDEX_SEQUENCE_HPP
Concatenate several lists.
Definition: list.hpp:149
Defines boost::mpl11::detail::std_size_t.
A simple sequence of integers.
Definition: std_index_sequence.hpp:25
Create an std_index_sequence with indices from 0 to n.
Definition: std_index_sequence.hpp:43