#ifndef SPROUT_CONTAINER_CONTAINER_TRANSFORM_TRAITS_HPP #define SPROUT_CONTAINER_CONTAINER_TRANSFORM_TRAITS_HPP #include #include #include namespace sprout { // // container_transform_traits // template struct container_transform_traits; namespace detail { template::size_type Size> struct default_array_rebind_size; template< template class Array, typename T, std::size_t N, typename sprout::container_traits >::size_type Size > struct default_array_rebind_size, Size> { public: typedef Array type; }; } // namespace detail template struct container_transform_traits { public: template::size_type Size> struct rebind_size : public sprout::detail::default_array_rebind_size {}; }; template struct container_transform_traits { public: template::size_type Size> struct rebind_size { typedef typename sprout::container_transform_traits::template rebind_size::type const type; }; }; template struct container_transform_traits { public: template::size_type Size> struct rebind_size { public: typedef T type[Size]; }; }; template struct container_transform_traits { public: template::size_type Size> struct rebind_size { public: typedef T const type[Size]; }; }; } // namespace sprout #endif // #ifndef SPROUT_CONTAINER_CONTAINER_TRANSFORM_TRAITS_HPP