/*============================================================================= Copyright (c) 2011-2014 Bolero MURAKAMI https://github.com/bolero-MURAKAMI/Sprout Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) =============================================================================*/ #ifndef SPROUT_INDEX_TUPLE_INDEX_TUPLE_HPP #define SPROUT_INDEX_TUPLE_INDEX_TUPLE_HPP #include #include #include namespace sprout { // // index_tuple // uindex_tuple // #if SPROUT_USE_TEMPLATE_ALIASES && !defined(SPROUT_WORKAROUND_NO_TEMPLATE_ARGUMENT_DEDUCTION_WITH_ALIASES) template using index_tuple = sprout::integer_sequence; template using uindex_tuple = sprout::integer_sequence; #else // #if SPROUT_USE_TEMPLATE_ALIASES && !defined(SPROUT_WORKAROUND_NO_TEMPLATE_ARGUMENT_DEDUCTION_WITH_ALIASES) namespace detail { template class Derived, T... Is> struct integer_sequence_another_base : public sprout::integer_sequence { public: typedef Derived type; template struct rebind : public Derived {}; public: static SPROUT_CONSTEXPR type make() SPROUT_NOEXCEPT { return type(); } }; } // namespace detail template struct index_tuple : public sprout::detail::integer_sequence_another_base {}; template struct uindex_tuple : public sprout::detail::integer_sequence_another_base {}; #endif // #if SPROUT_USE_TEMPLATE_ALIASES && !defined(SPROUT_WORKAROUND_NO_TEMPLATE_ARGUMENT_DEDUCTION_WITH_ALIASES) } // namespace sprout #endif // #ifndef SPROUT_INDEX_TUPLE_INDEX_TUPLE_HPP