12 #ifndef BOOST_MPL11_EXT_STD_TUPLE_HPP
13 #define BOOST_MPL11_EXT_STD_TUPLE_HPP
25 namespace boost {
namespace mpl11 {
28 template <
typename ...xs>
29 struct datatype<std::tuple<xs...>> {
30 using type = StdTuple;
34 struct cast< StdTuple, List> {
40 template <
typename ...xs>
41 struct apply<std::tuple<xs...>> {
42 using type = list<box<xs>...>;
47 struct cast< List, StdTuple> {
53 template <
typename ...xs>
54 struct apply<list<xs...>> {
55 using type = std::tuple<
typename xs::type...>;
58 template <
typename x,
typename xs>
59 struct apply<cons<x, xs>>
60 :
apply<typename unpack<into<list>, cons<x, xs>>::type>
65 struct Iterable<StdTuple> : instantiate<Iterable>::with<StdTuple> {
69 template <
typename x,
typename ...xs>
70 struct head_impl<std::tuple<x, xs...>> {
78 template <
typename x,
typename ...xs>
79 struct tail_impl<std::tuple<x, xs...>> {
80 using type = std::tuple<xs...>;
87 template <
typename ...xs>
88 struct is_empty_impl<std::tuple<xs...>>
89 : bool_<sizeof...(xs) == 0>
94 #endif // !BOOST_MPL11_EXT_STD_TUPLE_HPP
Defines the Iterable typeclass.
Invokes a metafunction class with the given arguments.
Definition: functional.hpp:39
Forward declares the boost::mpl11::List datatype.
Forwards to boost/mpl11/integer.hpp.
Defines the Functional module.
Forward declares the Foldable typeclass.