/*============================================================================= Copyright (c) 2005 Dan Marsden Copyright (c) 2005-2007 Joel de Guzman Copyright (c) 2007 Hartmut Kaiser 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) ==============================================================================*/ #include #include #include #include #include #if (defined (BOOST_NO_CXX11_HDR_UNORDERED_MAP) || \ defined (BOOST_NO_CXX11_HDR_UNORDERED_SET) ) #ifdef BOOST_HAS_HASH #include BOOST_HASH_SET_HEADER #include BOOST_HASH_MAP_HEADER #define BOOST_PHOENIX_HAS_HASH #define BOOST_PHOENIX_HASH_NAMESPACE BOOST_STD_EXTENSION_NAMESPACE #elif defined(BOOST_DINKUMWARE_STDLIB) && (BOOST_DINKUMWARE_STDLIB < 610) #include #include #define BOOST_PHOENIX_HAS_HASH #define BOOST_PHOENIX_HASH_NAMESPACE stdext #endif #else #define BOOST_PHOENIX_HAS_UNDORDERED_SET_AND_MAP #include #include #endif #include #include #include namespace { struct even { bool operator()(const int i) const { return i % 2 == 0; } }; struct mod_2_comparison { bool operator()( const int lhs, const int rhs) { return lhs % 2 == rhs % 2; } }; void find_test() { using boost::phoenix::arg_names::arg1; int array[] = {1,2,3}; BOOST_TEST(boost::phoenix::find(arg1,2)(array) == array + 1); std::set s(array, array + 3); BOOST_TEST(boost::phoenix::find(arg1, 2)(s) == s.find(2)); //#if !(defined(BOOST_MSVC) && (BOOST_MSVC >= 1900)) //std::map m = boost::assign::map_list_of(0, 1)(2, 3)(4, 5).to_container(m); std::map m = boost::assign::map_list_of(0, 1)(2, 3)(4, 5). convert_to_container >(); BOOST_TEST(boost::phoenix::find(arg1, 2)(m) == m.find(2)); //#endif #ifdef BOOST_PHOENIX_HAS_UNDORDERED_SET_AND_MAP std::unordered_set hs(array, array + 3); BOOST_TEST(boost::phoenix::find(arg1, 2)(hs) == hs.find(2)); //std::unordered_map hm = boost::assign::map_list_of(0, 1)(2, 3)(4, 5). // convert_to_container >(); // BOOST_TEST(boost::phoenix::find(arg1, 2)(hm) == hm.find(2)); #else #ifdef BOOST_PHOENIX_HAS_HASH BOOST_PHOENIX_HASH_NAMESPACE::hash_set hs(array, array + 3); BOOST_TEST(boost::phoenix::find(arg1, 2)(hs) == hs.find(2)); BOOST_PHOENIX_HASH_NAMESPACE::hash_map hm = boost::assign::map_list_of(0, 1)(2, 3)(4, 5). convert_to_container >(); BOOST_TEST(boost::phoenix::find(arg1, 2)(hm) == hm.find(2)); #endif #endif return; } } int main() { find_test(); return boost::report_errors(); }