From bc50ab0ba31e3d3ac34f11c46404b990a51c7e2a Mon Sep 17 00:00:00 2001 From: Peter Dimov Date: Sun, 1 Mar 2009 17:04:14 +0000 Subject: [PATCH] Refs #2128 (fixed in trunk.) [SVN r51512] --- test/Jamfile.v2 | 2 ++ test/bind_ref_test.cpp | 36 ++++++++++++++++++++++++++++++++++++ test/mem_fn_ref_test.cpp | 36 ++++++++++++++++++++++++++++++++++++ 3 files changed, 74 insertions(+) create mode 100644 test/bind_ref_test.cpp create mode 100644 test/mem_fn_ref_test.cpp diff --git a/test/Jamfile.v2 b/test/Jamfile.v2 index a0e0d07..3149749 100644 --- a/test/Jamfile.v2 +++ b/test/Jamfile.v2 @@ -39,4 +39,6 @@ test-suite "bind" [ run bind_fn2_test.cpp ] [ run bind_mf2_test.cpp ] [ run bind_eq2_test.cpp ] + [ run mem_fn_ref_test.cpp ] + [ run bind_ref_test.cpp ] ; diff --git a/test/bind_ref_test.cpp b/test/bind_ref_test.cpp new file mode 100644 index 0000000..f08172e --- /dev/null +++ b/test/bind_ref_test.cpp @@ -0,0 +1,36 @@ +// +// bind_ref_test.cpp - reference_wrapper +// +// Copyright (c) 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 +#include +#include + +struct X +{ + int f( int x ) + { + return x; + } + + int g( int x ) const + { + return -x; + } +}; + +int main() +{ + X x; + + BOOST_TEST( boost::bind( &X::f, _1, 1 )( boost::ref( x ) ) == 1 ); + BOOST_TEST( boost::bind( &X::g, _1, 2 )( boost::cref( x ) ) == -2 ); + + return boost::report_errors(); +} diff --git a/test/mem_fn_ref_test.cpp b/test/mem_fn_ref_test.cpp new file mode 100644 index 0000000..be98941 --- /dev/null +++ b/test/mem_fn_ref_test.cpp @@ -0,0 +1,36 @@ +// +// mem_fn_ref_test.cpp - reference_wrapper +// +// Copyright (c) 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 +#include +#include + +struct X +{ + int f() + { + return 1; + } + + int g() const + { + return 2; + } +}; + +int main() +{ + X x; + + BOOST_TEST( boost::mem_fn( &X::f )( boost::ref( x ) ) == 1 ); + BOOST_TEST( boost::mem_fn( &X::g )( boost::cref( x ) ) == 2 ); + + return boost::report_errors(); +}