#ifndef SPROUT_TUPLE_SUB_ARRAY_HPP #define SPROUT_TUPLE_SUB_ARRAY_HPP #include #include #include #include #include #include #include #include namespace sprout { namespace tuples { // // get // template typename sprout::fixed_container_traits >::value_type& get( sprout::sub_array& t ) SPROUT_NOEXCEPT_EXPR(SPROUT_NOEXCEPT_EXPR(*sprout::next(sprout::fixed_begin(t), I))) { static_assert(I < sprout::fixed_container_traits >::fixed_size, "get: index out of range"); return *sprout::next(sprout::fixed_begin(t), I); } template SPROUT_CONSTEXPR typename sprout::fixed_container_traits >::value_type const& get( sprout::sub_array const& t ) SPROUT_NOEXCEPT_EXPR(SPROUT_NOEXCEPT_EXPR(*sprout::next(sprout::fixed_begin(t), I))) { static_assert(I < sprout::fixed_container_traits >::fixed_size, "get: index out of range"); return *sprout::next(sprout::fixed_begin(t), I); } template typename sprout::fixed_container_traits >::value_type&& get( sprout::sub_array&& t ) SPROUT_NOEXCEPT_EXPR(SPROUT_NOEXCEPT_EXPR(std::move(sprout::tuples::get(t)))) { return std::move(sprout::tuples::get(t)); } } // namespace tuples using sprout::tuples::get; } // namespace sprout #endif // #ifndef SPROUT_TUPLE_SUB_ARRAY_HPP