/*============================================================================= Copyright (c) 2003 Joel de Guzman Copyright (c) 2004 Peder Holt Use, modification and distribution is subject to 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_ITERATOR_FILTER_VIEW_ITERATOR_HPP) #define FUSION_ITERATOR_FILTER_VIEW_ITERATOR_HPP #include #include #include #include #include #include namespace boost { namespace fusion { struct filter_view_iterator_tag; template struct filter_iterator : iterator_base > { typedef as_fusion_iterator first_converter; typedef typename first_converter::type first_iter; typedef as_fusion_iterator last_converter; typedef typename last_converter::type last_iter; typedef filter_view_iterator_tag tag; typedef detail::static_find_if filter; typedef typename filter::type first_type; typedef last_iter last_type; typedef Pred pred_type; filter_iterator(First const& first); first_type first; }; template filter_iterator::filter_iterator(First const& first) : first(filter::call(first_converter::convert(first))) {} }} #endif