#ifndef INPUTXSLT_SRC_SUPPORT_TUPLE_MAPPER_H_ #define INPUTXSLT_SRC_SUPPORT_TUPLE_MAPPER_H_ #include #include #include #include "common.h" #include "xobject_value.h" namespace InputXSLT { template using enable_if = typename std::enable_if::type; namespace Mapper { template < typename Target, std::size_t Index = 0, typename Current = std::tuple<>, enable_if::value> = 0 > inline Target construct( const xalan::XPathExecutionContext::XObjectArgVectorType&, Current&& current ) { return current; } template < typename Target, std::size_t Index = 0, typename Current = std::tuple<>, enable_if::value> = 0 > inline Target construct( const xalan::XPathExecutionContext::XObjectArgVectorType& source, Current&& current = std::tuple<>() ) { return construct< Target, Index + 1 >( source, std::tuple_cat( current, std::make_tuple( XObjectValue::get< typename std::tuple_element::type >( source[Index] ) ) ) ); } } } #endif // INPUTXSLT_SRC_SUPPORT_TUPLE_MAPPER_H_