/*============================================================================= Copyright (c) 2011-2019 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_STD_ARRAY_HPP #define SPROUT_TUPLE_STD_ARRAY_HPP #include #include #include #include #include #include #include #include namespace sprout { namespace tuples { // // tuple_access_traits // template struct tuple_access_traits > { public: template static SPROUT_CONSTEXPR T& tuple_get(std::array& t) SPROUT_NOEXCEPT { static_assert(I < N, "tuple_get: index out of range"); return const_cast(sprout::as_const(t)[I]); } template static SPROUT_CONSTEXPR T const& tuple_get(std::array const& t) SPROUT_NOEXCEPT { static_assert(I < N, "tuple_get: index out of range"); return t[I]; } template static SPROUT_CONSTEXPR T&& tuple_get(std::array&& t) SPROUT_NOEXCEPT { return sprout::move(tuple_get(t)); } }; } // namespace tuples } // namespace sprout #endif // #ifndef SPROUT_TUPLE_STD_ARRAY_HPP