bind_visit_test.cpp
来自「Boost provides free peer-reviewed portab」· C++ 代码 · 共 68 行
CPP
68 行
#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>#include <typeinfo>#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 ) { std::cout << "visitor::operator()( T ): " << typeid( t ).name() << std::endl; } void operator()( int const & t ) { std::cout << "visitor::operator()( int ): " << t << std::endl; 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();}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?