/*=============================================================================

    Copyright (c) 2001-2006 Joel de Guzman

    Copyright (c) 2005-2006 Dan Marsden



    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_FILTER_02122005_1839)

#define FUSION_FILTER_02122005_1839



#include <boost/fusion/view/filter_view/filter_view.hpp>

#include <boost/type_traits/is_same.hpp>



namespace boost { namespace fusion

{

    namespace result_of

    {

        template <typename Sequence, typename T>

        struct filter

        {

            typedef filter_view<Sequence, is_same<mpl::_, T> > type;

        };

    }

    

    template <typename T, typename Sequence>

    inline typename result_of::filter<Sequence const, T>::type

    filter(Sequence const& seq)

    {

        return filter_view<const Sequence, is_same<mpl::_, T> >(seq);

    }

}}



#endif



