summaryrefslogtreecommitdiff log msg author committer range
blob: e6bf3d0c55e3686dd3e540f8213690eb3f03266f (plain)
 ```1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 ``` ``````/*! @file Defines `boost::hana::detail::variadic::reverse_apply_unrolled`. @copyright Louis Dionne 2013-2017 Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE.md or copy at http://boost.org/LICENSE_1_0.txt) */ #ifndef BOOST_HANA_DETAIL_VARIADIC_REVERSE_APPLY_UNROLLED_HPP #define BOOST_HANA_DETAIL_VARIADIC_REVERSE_APPLY_UNROLLED_HPP #include #include BOOST_HANA_NAMESPACE_BEGIN namespace detail { namespace variadic { struct reverse_apply_unrolled_impl { template constexpr decltype(auto) operator()(F&& f) const { return static_cast(f)(); } template constexpr decltype(auto) operator()(F&& f, X1&& x1) const { return static_cast(f)( static_cast(x1) ); } template constexpr decltype(auto) operator()(F&& f, X1&& x1, X2&& x2) const { return static_cast(f)( static_cast(x2), static_cast(x1) ); } template constexpr decltype(auto) operator()(F&& f, X1&& x1, X2&& x2, X3&& x3) const { return static_cast(f)( static_cast(x3), static_cast(x2), static_cast(x1) ); } template constexpr decltype(auto) operator()(F&& f, X1&& x1, X2&& x2, X3&& x3, X4&& x4) const { return static_cast(f)( static_cast(x4), static_cast(x3), static_cast(x2), static_cast(x1) ); } template constexpr decltype(auto) operator()(F&& f, X1&& x1, X2&& x2, X3&& x3, X4&& x4, X5&& x5) const { return static_cast(f)( static_cast(x5), static_cast(x4), static_cast(x3), static_cast(x2), static_cast(x1) ); } template constexpr decltype(auto) operator()(F&& f, X1&& x1, X2&& x2, X3&& x3, X4&& x4, X5&& x5, X6&& x6, Xn&& ...xn) const { return (*this)(hana::reverse_partial( static_cast(f) , static_cast(x6) , static_cast(x5) , static_cast(x4) , static_cast(x3) , static_cast(x2) , static_cast(x1) ), static_cast(xn)...); } }; constexpr reverse_apply_unrolled_impl reverse_apply_unrolled{}; }} BOOST_HANA_NAMESPACE_END #endif // !BOOST_HANA_DETAIL_VARIADIC_REVERSE_APPLY_UNROLLED_HPP ``````