/*============================================================================= 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_FOLD_UNTIL_HPP_INCLUDED) #define BOOST_FUSION_SEGMENTED_FOLD_UNTIL_HPP_INCLUDED #include #include #include #include #include #include #include #include namespace boost { namespace fusion { //auto segmented_fold_until(seq, state, fun) //{ // return first(segmented_fold_until_impl(seq, state, nil, fun)); //} namespace result_of { template struct segmented_fold_until { typedef detail::segmented_fold_until_impl< Sequence , State , fusion::nil , Fun > filter; typedef typename filter::type type; }; } template typename lazy_disable_if< is_const , result_of::segmented_fold_until >::type segmented_fold_until(Sequence& seq, State const& state, Fun const& fun) { typedef typename result_of::segmented_fold_until::filter filter; return filter::call(seq, state, fusion::nil(), fun); } template typename result_of::segmented_fold_until::type segmented_fold_until(Sequence const& seq, State const& state, Fun const& fun) { typedef typename result_of::segmented_fold_until::filter filter; return filter::call(seq, state, fusion::nil(), fun); } }} #endif