/*============================================================================= Copyright (c) 2011 Eric Niebler 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) ==============================================================================*/ #if !defined(BOOST_FUSION_SEGMENTED_SIZE_08112006_1141) #define BOOST_FUSION_SEGMENTED_SIZE_08112006_1141 #include #include #include #include #include #include #include #include #include #include namespace boost { namespace fusion { namespace detail { /////////////////////////////////////////////////////////////////////////// // calculates the size of any segmented data structure. template struct segmented_size; /////////////////////////////////////////////////////////////////////////// template::value> struct segmented_size_impl : mpl::fold< typename remove_reference< typename add_const< typename result_of::segments::type >::type >::type , mpl::size_t<0> , mpl::plus > > >::type {}; template struct segmented_size_impl : result_of::size::type {}; template struct segmented_size : segmented_size_impl {}; }}} #endif