/*============================================================================= Copyright (c) 2011-2016 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_TUPLE_TUPLE_TUPLE_SIZE_HPP #define SPROUT_TUPLE_TUPLE_TUPLE_SIZE_HPP #include #include #include #include #include #include namespace sprout { namespace tuples { // // tuple_size // namespace detail { #if defined(_MSC_VER) template #else template >::value> #endif struct tuple_size_default; template struct tuple_size_default : public sprout::detail::nil_base {}; template struct tuple_size_default : public sprout::detail::type_traits_wrapper > {}; } // namespace detail template struct tuple_size : public sprout::tuples::detail::tuple_size_default {}; template struct tuple_size : public sprout::tuples::tuple_size {}; template struct tuple_size : public sprout::tuples::tuple_size {}; template struct tuple_size : public sprout::tuples::tuple_size {}; } // namespace tuples using sprout::tuples::tuple_size; #if SPROUT_USE_VARIABLE_TEMPLATES namespace tuples { template SPROUT_STATIC_CONSTEXPR std::size_t tuple_size_v = sprout::tuples::tuple_size::value; } // namespace tuples using sprout::tuples::tuple_size_v; #endif // #if SPROUT_USE_VARIABLE_TEMPLATES } // namespace sprout #endif // #ifndef SPROUT_TUPLE_TUPLE_TUPLE_SIZE_HPP