Mercurial > hg > vamp-build-and-test
comparison DEPENDENCIES/generic/include/boost/fusion/sequence/intrinsic/at.hpp @ 101:c530137014c0
Update Boost headers (1.58.0)
author | Chris Cannam |
---|---|
date | Mon, 07 Sep 2015 11:12:49 +0100 |
parents | 2665513ce2d3 |
children |
comparison
equal
deleted
inserted
replaced
100:793467b5e61c | 101:c530137014c0 |
---|---|
5 file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) | 5 file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) |
6 ==============================================================================*/ | 6 ==============================================================================*/ |
7 #if !defined(FUSION_AT_05042005_0722) | 7 #if !defined(FUSION_AT_05042005_0722) |
8 #define FUSION_AT_05042005_0722 | 8 #define FUSION_AT_05042005_0722 |
9 | 9 |
10 #include <boost/fusion/support/config.hpp> | |
10 #include <boost/mpl/int.hpp> | 11 #include <boost/mpl/int.hpp> |
12 #include <boost/mpl/if.hpp> | |
13 #include <boost/mpl/less.hpp> | |
14 #include <boost/mpl/empty_base.hpp> | |
11 #include <boost/type_traits/is_const.hpp> | 15 #include <boost/type_traits/is_const.hpp> |
12 #include <boost/fusion/sequence/intrinsic_fwd.hpp> | 16 #include <boost/fusion/sequence/intrinsic_fwd.hpp> |
13 #include <boost/fusion/support/tag_of.hpp> | 17 #include <boost/fusion/support/tag_of.hpp> |
14 #include <boost/fusion/support/detail/access.hpp> | 18 #include <boost/fusion/support/detail/access.hpp> |
15 | 19 |
53 | 57 |
54 template <> | 58 template <> |
55 struct at_impl<std_tuple_tag>; | 59 struct at_impl<std_tuple_tag>; |
56 } | 60 } |
57 | 61 |
62 namespace detail | |
63 { | |
64 template <typename Sequence, typename N, typename Tag> | |
65 struct at_impl | |
66 : mpl::if_< | |
67 mpl::less<N, typename extension::size_impl<Tag>::template apply<Sequence>::type> | |
68 , typename extension::at_impl<Tag>::template apply<Sequence, N> | |
69 , mpl::empty_base | |
70 >::type | |
71 {}; | |
72 } | |
73 | |
58 namespace result_of | 74 namespace result_of |
59 { | 75 { |
60 template <typename Sequence, typename N> | 76 template <typename Sequence, typename N> |
61 struct at | 77 struct at |
62 : extension::at_impl<typename detail::tag_of<Sequence>::type>:: | 78 : detail::at_impl<Sequence, N, typename detail::tag_of<Sequence>::type> |
63 template apply<Sequence, N> | |
64 {}; | 79 {}; |
65 | 80 |
66 template <typename Sequence, int N> | 81 template <typename Sequence, int N> |
67 struct at_c | 82 struct at_c |
68 : at<Sequence, mpl::int_<N> > | 83 : at<Sequence, mpl::int_<N> > |
69 {}; | 84 {}; |
70 } | 85 } |
71 | 86 |
72 | 87 |
73 template <typename N, typename Sequence> | 88 template <typename N, typename Sequence> |
89 BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED | |
74 inline typename | 90 inline typename |
75 lazy_disable_if< | 91 lazy_disable_if< |
76 is_const<Sequence> | 92 is_const<Sequence> |
77 , result_of::at<Sequence, N> | 93 , result_of::at<Sequence, N> |
78 >::type | 94 >::type |
80 { | 96 { |
81 return result_of::at<Sequence, N>::call(seq); | 97 return result_of::at<Sequence, N>::call(seq); |
82 } | 98 } |
83 | 99 |
84 template <typename N, typename Sequence> | 100 template <typename N, typename Sequence> |
101 BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED | |
85 inline typename result_of::at<Sequence const, N>::type | 102 inline typename result_of::at<Sequence const, N>::type |
86 at(Sequence const& seq) | 103 at(Sequence const& seq) |
87 { | 104 { |
88 return result_of::at<Sequence const, N>::call(seq); | 105 return result_of::at<Sequence const, N>::call(seq); |
89 } | 106 } |
90 | 107 |
91 template <int N, typename Sequence> | 108 template <int N, typename Sequence> |
109 BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED | |
92 inline typename | 110 inline typename |
93 lazy_disable_if< | 111 lazy_disable_if< |
94 is_const<Sequence> | 112 is_const<Sequence> |
95 , result_of::at_c<Sequence, N> | 113 , result_of::at_c<Sequence, N> |
96 >::type | 114 >::type |
98 { | 116 { |
99 return fusion::at<mpl::int_<N> >(seq); | 117 return fusion::at<mpl::int_<N> >(seq); |
100 } | 118 } |
101 | 119 |
102 template <int N, typename Sequence> | 120 template <int N, typename Sequence> |
121 BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED | |
103 inline typename result_of::at_c<Sequence const, N>::type | 122 inline typename result_of::at_c<Sequence const, N>::type |
104 at_c(Sequence const& seq) | 123 at_c(Sequence const& seq) |
105 { | 124 { |
106 return fusion::at<mpl::int_<N> >(seq); | 125 return fusion::at<mpl::int_<N> >(seq); |
107 } | 126 } |