/*============================================================================= Copyright (c) 2001-2006 Joel de Guzman 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_FIND_05052005_1107) #define FUSION_FIND_05052005_1107 #include #include #include #include #include #include #include #include namespace boost { namespace fusion { struct associative_sequence_tag; namespace result_of { template < typename Sequence , typename T , bool is_associative_sequence = traits::is_associative::value > struct find; template struct find { typedef detail::static_seq_find_if< typename result_of::begin::type , typename result_of::end::type , is_same > filter; typedef typename filter::type type; }; template struct find { typedef detail::assoc_find filter; typedef typename filter::type type; }; } template inline typename lazy_disable_if< is_const , result_of::find >::type const find(Sequence& seq) { typedef typename result_of::find::filter filter; return filter::call(seq); } template inline typename result_of::find::type const find(Sequence const& seq) { typedef typename result_of::find::filter filter; return filter::call(seq); } }} #endif