Chris@16: /*============================================================================= Chris@16: Copyright (c) 2001-2011 Joel de Guzman Chris@16: Copyright (c) 2011 Eric Niebler Chris@16: Chris@16: Distributed under the Boost Software License, Version 1.0. (See accompanying Chris@16: file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) Chris@16: ==============================================================================*/ Chris@16: #if !defined(FUSION_FIND_05052005_1107) Chris@16: #define FUSION_FIND_05052005_1107 Chris@16: Chris@101: #include Chris@16: #include Chris@16: #include Chris@16: #include Chris@16: #include Chris@16: #include Chris@16: #include Chris@16: #include Chris@16: #include Chris@16: #include Chris@16: #include Chris@16: #include Chris@16: #include Chris@16: Chris@16: namespace boost { namespace fusion Chris@16: { Chris@16: namespace result_of Chris@16: { Chris@16: template Chris@16: struct find Chris@16: : mpl::if_< Chris@16: traits::is_segmented Chris@16: , detail::result_of_segmented_find Chris@16: , detail::result_of_find_if< Chris@16: Sequence, Chris@16: is_same< Chris@16: typename mpl::if_< Chris@16: traits::is_associative Chris@16: , key_of Chris@16: , value_of Chris@16: >::type Chris@16: , T Chris@16: > Chris@16: > Chris@16: >::type Chris@16: {}; Chris@16: } Chris@16: Chris@16: template Chris@101: BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED Chris@101: inline typename Chris@16: lazy_disable_if< Chris@16: is_const Chris@16: , result_of::find Chris@16: >::type const Chris@16: find(Sequence& seq) Chris@16: { Chris@16: typedef typename result_of::find::filter filter; Chris@16: return filter::call(seq); Chris@16: } Chris@16: Chris@16: template Chris@101: BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED Chris@16: inline typename result_of::find::type const Chris@16: find(Sequence const& seq) Chris@16: { Chris@16: typedef typename result_of::find::filter filter; Chris@16: return filter::call(seq); Chris@16: } Chris@16: }} Chris@16: Chris@16: #endif