/*============================================================================== Copyright (c) 2005 Peter Dimov Copyright (c) 2005-2010 Joel de Guzman Copyright (c) 2010 Thomas Heller 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 #if defined(BOOST_MSVC) #pragma warning(disable: 4786) // identifier truncated in debug info #pragma warning(disable: 4710) // function not inlined #pragma warning(disable: 4711) // function selected for automatic inline expansion #pragma warning(disable: 4514) // unreferenced inline removed #endif #include #include #if defined(BOOST_MSVC) && (BOOST_MSVC < 1300) #pragma warning(push, 3) #endif #include #if defined(BOOST_MSVC) && (BOOST_MSVC < 1300) #pragma warning(pop) #endif #include #include int main() { using boost::phoenix::bind; using boost::phoenix::placeholders::_1; typedef std::pair pair_type; pair_type pair( 10, 20 ); #if defined(BOOST_MSVC) && (BOOST_MSVC >= 1600) && (BOOST_MSVC < 1700) // bind is being confused with 'std::tr1::_Bind' to be found here // C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\INCLUDE\xxbind1(485) int const & x = boost::phoenix::bind( &pair_type::first, _1 )( pair ); #else int const & x = bind( &pair_type::first, _1 )( pair ); #endif BOOST_TEST( &pair.first == &x ); return boost::report_errors(); }