MPL11
 All Classes Namespaces Files Typedefs Macros Groups Pages
multiple_inheritance2.hpp
Go to the documentation of this file.
1 
12 #ifndef BOOST_MPL11_DETAIL_AT_INDEX_MULTIPLE_INHERITANCE2_HPP
13 #define BOOST_MPL11_DETAIL_AT_INDEX_MULTIPLE_INHERITANCE2_HPP
14 
17 
18 
19 namespace boost { namespace mpl11 { namespace detail { namespace at_index {
20  template <std_size_t n, std_size_t index, typename ...xs>
21  struct select { };
22 
23  template <std_size_t n, typename ...xs>
24  struct select<n, n, xs...> : xs... { };
25 
26  template <std_size_t n, typename indices, typename ...xs>
27  struct m2_indexer_impl;
28 
29  template <std_size_t n, std_size_t ...index, typename ...xs>
30  struct m2_indexer_impl<n, std_index_sequence<index...>, xs...>
31  : select<n, index, xs>...
32  { };
33 
42  template <std_size_t n, typename ...xs>
43  using multiple_inheritance2 = m2_indexer_impl<
44  n, typename make_std_index_sequence<sizeof...(xs)>::type, xs...
45  >;
46 }}}} // end namespace boost::mpl11::detail::at_index
47 
48 #endif // !BOOST_MPL11_DETAIL_AT_INDEX_MULTIPLE_INHERITANCE2_HPP
Defines boost::mpl11::detail::std_size_t.
Defines boost::mpl11::detail::std_index_sequence.