forked from boostorg/bind
@@ -48,6 +48,8 @@
|
||||
namespace boost
|
||||
{
|
||||
|
||||
template<class T> class weak_ptr;
|
||||
|
||||
namespace _bi // implementation details
|
||||
{
|
||||
|
||||
@@ -126,6 +128,13 @@ private:
|
||||
T t_;
|
||||
};
|
||||
|
||||
// ref_compare for weak_ptr
|
||||
|
||||
template<class T> bool ref_compare( value< weak_ptr<T> > const & a, value< weak_ptr<T> > const & b, int )
|
||||
{
|
||||
return !(a.get() < b.get()) && !(b.get() < a.get());
|
||||
}
|
||||
|
||||
// type
|
||||
|
||||
template<class T> class type {};
|
||||
|
@@ -41,4 +41,5 @@ test-suite "bind"
|
||||
[ run bind_eq2_test.cpp ]
|
||||
[ run mem_fn_ref_test.cpp ]
|
||||
[ run bind_ref_test.cpp ]
|
||||
[ run bind_eq3_test.cpp ]
|
||||
;
|
||||
|
45
test/bind_eq3_test.cpp
Normal file
45
test/bind_eq3_test.cpp
Normal file
@@ -0,0 +1,45 @@
|
||||
#include <boost/config.hpp>
|
||||
|
||||
#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
|
||||
|
||||
//
|
||||
// bind_eq3_test.cpp - function_equal with bind and weak_ptr
|
||||
//
|
||||
// Copyright (c) 2004, 2005, 2009 Peter Dimov
|
||||
//
|
||||
// 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 <boost/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()
|
||||
{
|
||||
test_self_equal( boost::bind( f, _1 ) );
|
||||
test_self_equal( boost::bind( f, boost::weak_ptr<void>() ) );
|
||||
|
||||
return boost::report_errors();
|
||||
}
|
Reference in New Issue
Block a user