#include <boost/config.hpp>
#if defined(BOOST_MSVC)
#pragma warning(disable: 4786)
#pragma warning(disable: 4710)
#pragma warning(disable: 4711)
#pragma warning(disable: 4514)
#endif
#include <boost/phoenix/core.hpp>
#include <boost/phoenix/bind.hpp>
#include <boost/function_equal.hpp>
#include <boost/weak_ptr.hpp>
#include <boost/detail/lightweight_test.hpp>
int f( boost::weak_ptr<void> wp )
{
return wp.use_count();
}
template< class F > void test_self_equal( F f )
{
#ifdef BOOST_NO_ARGUMENT_DEPENDENT_LOOKUP
using boost::function_equal;
#endif
BOOST_TEST( function_equal( f, f ) );
}
int main()
{
using boost::phoenix::bind;
using boost::phoenix::placeholders::_1;
test_self_equal( bind( f, _1 ) );
test_self_equal( bind( f, boost::weak_ptr<void>() ) );
return boost::report_errors();
}