/*! @file Defines `boost::hana::detail::variadic::reverse_apply_flat`. @copyright Louis Dionne 2013-2016 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_FLAT_HPP #define BOOST_HANA_DETAIL_VARIADIC_REVERSE_APPLY_FLAT_HPP #include #include #include BOOST_HANA_NAMESPACE_BEGIN namespace detail { namespace variadic { template constexpr decltype(auto) reverse_apply_flat_helper(std::integer_sequence, F&& f, X&& ...x) { return static_cast(f)( detail::variadic::at( static_cast(x)... )... ); } template constexpr decltype(auto) reverse_apply_flat(F&& f, X&& ...x) { return reverse_apply_flat_helper( std::make_integer_sequence{}, static_cast(f), static_cast(x)... ); } }} BOOST_HANA_NAMESPACE_END #endif // !BOOST_HANA_DETAIL_VARIADIC_REVERSE_APPLY_FLAT_HPP