/*============================================================================= Copyright (c) 2006 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(FUSION_SEGMENTS_04052005_1141) #define FUSION_SEGMENTS_04052005_1141 #include namespace boost { namespace fusion { // segments: returns a sequence of sequences namespace extension { template struct segments_impl { template struct apply {}; }; } namespace result_of { template struct segments { typedef typename extension::segments_impl::type>:: template apply::type type; }; } template typename result_of::segments::type segments(Sequence & seq) { return extension::segments_impl::type>:: template apply::call(seq); } template typename result_of::segments::type segments(Sequence const& seq) { return extension::segments_impl::type>:: template apply::call(seq); } }} #endif