bind_member_function_tests.cpp

来自「Boost provides free peer-reviewed portab」· C++ 代码 · 共 77 行

CPP
77
字号
/*=============================================================================    Copyright (c) 2001-2007 Joel de Guzman    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 <iostream>#include <cmath>#include <boost/detail/lightweight_test.hpp>#include <boost/noncopyable.hpp>#include <boost/spirit/include/phoenix_core.hpp>#include <boost/spirit/include/phoenix_operator.hpp>#include <boost/spirit/include/phoenix_bind.hpp>using namespace boost::phoenix;using namespace boost::phoenix::arg_names;using namespace std;namespace phx = boost::phoenix;namespace test{    struct x : boost::noncopyable // test non-copyable (hold this by reference)    {        void        test() const        {            cout << "Test binding member functions...\n";        }    };    struct y : boost::noncopyable // test non-copyable (hold this by reference)    {        int        negate(int n)        {            return -n;        }    };    struct z : boost::noncopyable // test non-copyable (hold this by reference)    {        int        plus(int a, int b)        {            return a + b;        }    };    struct zz : boost::noncopyable // test non-copyable (hold this by reference)    {        int        plus3(int a, int b, int c)        {            return a + b + c;        }    };}intmain(){    int a = 123;    int b = 256;    test::x x_;    test::y y_;    test::z z_;    test::zz zz_;    bind(&test::x::test, x_)();    BOOST_TEST(bind(&test::y::negate, y_, arg1)(a) == -a);    BOOST_TEST(bind(&test::z::plus, arg1, arg2, arg3)(z_, a, b) == a+b);    BOOST_TEST(bind(&test::zz::plus3, zz_, arg1, arg2, arg3)(a, b, a) == a+b+a);    BOOST_TEST(bind(&test::y::negate, &y_, 777)(a) == -777);    return boost::report_errors();}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?