#ifndef TYPEASVALUE_SRC_FUNCTION_DETAIL_APPLY_H_ #define TYPEASVALUE_SRC_FUNCTION_DETAIL_APPLY_H_ #include "placeholder.h" namespace tav { namespace detail { template < template class Function, typename... Arguments > struct apply_none { using function = Function; }; template < template class Function, typename... Arguments > struct apply_variadic { template using function = Function< Eval, Arguments >>... >; }; template < template class Function, typename... Arguments > struct apply_single : apply_variadic { template using function = typename apply_variadic< Function, Arguments... >::template function; }; template < template class Function, typename... Arguments > struct apply_pair : apply_variadic { template using function = typename apply_variadic< Function, Arguments... >::template function; }; } } #endif // TYPEASVALUE_SRC_FUNCTION_DETAIL_APPLY_H_