/*============================================================================= Copyright (c) 2011-2015 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_CONTAINER_STD_ARRAY_HPP #define SPROUT_CONTAINER_STD_ARRAY_HPP #include #include #if SPROUT_USE_INDEX_ITERATOR_IMPLEMENTATION # include # include # include # include #endif #if SPROUT_USE_INDEX_ITERATOR_IMPLEMENTATION namespace sprout { // // container_traits // template struct container_traits > : public sprout::detail::container_traits_default > { public: typedef sprout::index_iterator&, true> iterator; typedef sprout::index_iterator const&, true> const_iterator; }; // // container_range_traits // template struct container_range_traits > : public sprout::detail::container_range_traits_default > { public: static SPROUT_CONSTEXPR typename sprout::container_traits >::iterator range_begin(std::array& cont) { return typename sprout::container_traits >::iterator(cont, 0); } static SPROUT_CONSTEXPR typename sprout::container_traits const>::iterator range_begin(std::array const& cont) { return typename sprout::container_traits const>::iterator(cont, 0); } static SPROUT_CONSTEXPR typename sprout::container_traits >::iterator range_end(std::array& cont) { return typename sprout::container_traits >::iterator(cont, cont.size()); } static SPROUT_CONSTEXPR typename sprout::container_traits const>::iterator range_end(std::array const& cont) { return typename sprout::container_traits const>::iterator(cont, cont.size()); } }; } // namespace sprout #endif #endif // #ifndef SPROUT_CONTAINER_STD_ARRAY_HPP