forked from boostorg/bind
Added bind_visit_test
[SVN r33179]
This commit is contained in:
@@ -1,6 +1,6 @@
|
|||||||
# Boost.Bind Library test Jamfile
|
# Boost.Bind Library test Jamfile
|
||||||
#
|
#
|
||||||
# Copyright (c) 2003-2005 Peter Dimov
|
# Copyright (c) 2003-2006 Peter Dimov
|
||||||
#
|
#
|
||||||
# Permission to copy, use, modify, sell and distribute this software
|
# Permission to copy, use, modify, sell and distribute this software
|
||||||
# is granted provided this copyright notice appears in all copies.
|
# is granted provided this copyright notice appears in all copies.
|
||||||
@@ -31,6 +31,7 @@ DEPENDS all : bind ;
|
|||||||
[ run bind_rv_sp_test.cpp ]
|
[ run bind_rv_sp_test.cpp ]
|
||||||
[ compile bind_unary_addr.cpp ]
|
[ compile bind_unary_addr.cpp ]
|
||||||
[ run bind_dm3_test.cpp ]
|
[ run bind_dm3_test.cpp ]
|
||||||
|
[ run bind_visit_test.cpp ]
|
||||||
[ run mem_fn_test.cpp ]
|
[ run mem_fn_test.cpp ]
|
||||||
[ run mem_fn_void_test.cpp ]
|
[ run mem_fn_void_test.cpp ]
|
||||||
[ run mem_fn_derived_test.cpp ]
|
[ run mem_fn_derived_test.cpp ]
|
||||||
|
@@ -1,6 +1,6 @@
|
|||||||
# Boost.Bind Library test Jamfile
|
# Boost.Bind Library test Jamfile
|
||||||
#
|
#
|
||||||
# Copyright (c) 2003-2005 Peter Dimov
|
# Copyright (c) 2003-2006 Peter Dimov
|
||||||
#
|
#
|
||||||
# Permission to copy, use, modify, sell and distribute this software
|
# Permission to copy, use, modify, sell and distribute this software
|
||||||
# is granted provided this copyright notice appears in all copies.
|
# is granted provided this copyright notice appears in all copies.
|
||||||
@@ -25,6 +25,7 @@ test-suite "bind"
|
|||||||
[ run bind_rv_sp_test.cpp ]
|
[ run bind_rv_sp_test.cpp ]
|
||||||
[ compile bind_unary_addr.cpp ]
|
[ compile bind_unary_addr.cpp ]
|
||||||
[ run bind_dm3_test.cpp ]
|
[ run bind_dm3_test.cpp ]
|
||||||
|
[ run bind_visit_test.cpp ]
|
||||||
[ run mem_fn_test.cpp ]
|
[ run mem_fn_test.cpp ]
|
||||||
[ run mem_fn_void_test.cpp ]
|
[ run mem_fn_void_test.cpp ]
|
||||||
[ run mem_fn_derived_test.cpp ]
|
[ run mem_fn_derived_test.cpp ]
|
||||||
|
64
test/bind_visit_test.cpp
Normal file
64
test/bind_visit_test.cpp
Normal file
@@ -0,0 +1,64 @@
|
|||||||
|
#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
|
||||||
|
|
||||||
|
// Copyright (c) 2006 Douglas Gregor <doug.gregor@gmail.com>
|
||||||
|
// Copyright (c) 2006 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/visit_each.hpp>
|
||||||
|
|
||||||
|
#if defined(BOOST_MSVC) && (BOOST_MSVC < 1300)
|
||||||
|
# pragma warning(push, 3)
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#include <iostream>
|
||||||
|
|
||||||
|
#if defined(BOOST_MSVC) && (BOOST_MSVC < 1300)
|
||||||
|
# pragma warning(pop)
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#include <boost/detail/lightweight_test.hpp>
|
||||||
|
|
||||||
|
struct visitor
|
||||||
|
{
|
||||||
|
int hash;
|
||||||
|
|
||||||
|
visitor(): hash( 0 )
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
template<typename T> void operator()( T const & /*t*/ )
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
void operator()( int const & t )
|
||||||
|
{
|
||||||
|
hash = hash * 10 + t;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
int f( int x, int y, int z )
|
||||||
|
{
|
||||||
|
return x + y + z;
|
||||||
|
}
|
||||||
|
|
||||||
|
int main()
|
||||||
|
{
|
||||||
|
visitor vis;
|
||||||
|
|
||||||
|
boost::visit_each( vis, boost::bind( f, 3, _1, 4 ) );
|
||||||
|
|
||||||
|
BOOST_TEST( vis.hash == 34 );
|
||||||
|
|
||||||
|
return boost::report_errors();
|
||||||
|
}
|
Reference in New Issue
Block a user