⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mem_fn_eq_test.cpp

📁 An article on the implementation of a fast C++ delegate with many advanced features.
💻 CPP
📖 第 1 页 / 共 2 页
字号:

    // 3

    BOOST_TEST( boost::mem_fn(&X::mf3_1) == boost::mem_fn(&X::mf3_1) );
    BOOST_TEST( boost::mem_fn(&X::mf3_1) != boost::mem_fn(&X::mf3_2) );

    BOOST_TEST( boost::mem_fn(&X::cmf3_1) == boost::mem_fn(&X::cmf3_1) );
    BOOST_TEST( boost::mem_fn(&X::cmf3_1) != boost::mem_fn(&X::cmf3_2) );

    BOOST_TEST( boost::mem_fn(&X::mf3v_1) == boost::mem_fn(&X::mf3v_1) );
    BOOST_TEST( boost::mem_fn(&X::mf3v_1) != boost::mem_fn(&X::mf3v_2) );

    BOOST_TEST( boost::mem_fn(&X::cmf3v_1) == boost::mem_fn(&X::cmf3v_1) );
    BOOST_TEST( boost::mem_fn(&X::cmf3v_1) != boost::mem_fn(&X::cmf3v_2) );

    // 4

    BOOST_TEST( boost::mem_fn(&X::mf4_1) == boost::mem_fn(&X::mf4_1) );
    BOOST_TEST( boost::mem_fn(&X::mf4_1) != boost::mem_fn(&X::mf4_2) );

    BOOST_TEST( boost::mem_fn(&X::cmf4_1) == boost::mem_fn(&X::cmf4_1) );
    BOOST_TEST( boost::mem_fn(&X::cmf4_1) != boost::mem_fn(&X::cmf4_2) );

    BOOST_TEST( boost::mem_fn(&X::mf4v_1) == boost::mem_fn(&X::mf4v_1) );
    BOOST_TEST( boost::mem_fn(&X::mf4v_1) != boost::mem_fn(&X::mf4v_2) );

    BOOST_TEST( boost::mem_fn(&X::cmf4v_1) == boost::mem_fn(&X::cmf4v_1) );
    BOOST_TEST( boost::mem_fn(&X::cmf4v_1) != boost::mem_fn(&X::cmf4v_2) );

    // 5

    BOOST_TEST( boost::mem_fn(&X::mf5_1) == boost::mem_fn(&X::mf5_1) );
    BOOST_TEST( boost::mem_fn(&X::mf5_1) != boost::mem_fn(&X::mf5_2) );

    BOOST_TEST( boost::mem_fn(&X::cmf5_1) == boost::mem_fn(&X::cmf5_1) );
    BOOST_TEST( boost::mem_fn(&X::cmf5_1) != boost::mem_fn(&X::cmf5_2) );

    BOOST_TEST( boost::mem_fn(&X::mf5v_1) == boost::mem_fn(&X::mf5v_1) );
    BOOST_TEST( boost::mem_fn(&X::mf5v_1) != boost::mem_fn(&X::mf5v_2) );

    BOOST_TEST( boost::mem_fn(&X::cmf5v_1) == boost::mem_fn(&X::cmf5v_1) );
    BOOST_TEST( boost::mem_fn(&X::cmf5v_1) != boost::mem_fn(&X::cmf5v_2) );

    // 6

    BOOST_TEST( boost::mem_fn(&X::mf6_1) == boost::mem_fn(&X::mf6_1) );
    BOOST_TEST( boost::mem_fn(&X::mf6_1) != boost::mem_fn(&X::mf6_2) );

    BOOST_TEST( boost::mem_fn(&X::cmf6_1) == boost::mem_fn(&X::cmf6_1) );
    BOOST_TEST( boost::mem_fn(&X::cmf6_1) != boost::mem_fn(&X::cmf6_2) );

    BOOST_TEST( boost::mem_fn(&X::mf6v_1) == boost::mem_fn(&X::mf6v_1) );
    BOOST_TEST( boost::mem_fn(&X::mf6v_1) != boost::mem_fn(&X::mf6v_2) );

    BOOST_TEST( boost::mem_fn(&X::cmf6v_1) == boost::mem_fn(&X::cmf6v_1) );
    BOOST_TEST( boost::mem_fn(&X::cmf6v_1) != boost::mem_fn(&X::cmf6v_2) );

    // 7

    BOOST_TEST( boost::mem_fn(&X::mf7_1) == boost::mem_fn(&X::mf7_1) );
    BOOST_TEST( boost::mem_fn(&X::mf7_1) != boost::mem_fn(&X::mf7_2) );

    BOOST_TEST( boost::mem_fn(&X::cmf7_1) == boost::mem_fn(&X::cmf7_1) );
    BOOST_TEST( boost::mem_fn(&X::cmf7_1) != boost::mem_fn(&X::cmf7_2) );

    BOOST_TEST( boost::mem_fn(&X::mf7v_1) == boost::mem_fn(&X::mf7v_1) );
    BOOST_TEST( boost::mem_fn(&X::mf7v_1) != boost::mem_fn(&X::mf7v_2) );

    BOOST_TEST( boost::mem_fn(&X::cmf7v_1) == boost::mem_fn(&X::cmf7v_1) );
    BOOST_TEST( boost::mem_fn(&X::cmf7v_1) != boost::mem_fn(&X::cmf7v_2) );

    // 8

    BOOST_TEST( boost::mem_fn(&X::mf8_1) == boost::mem_fn(&X::mf8_1) );
    BOOST_TEST( boost::mem_fn(&X::mf8_1) != boost::mem_fn(&X::mf8_2) );

    BOOST_TEST( boost::mem_fn(&X::cmf8_1) == boost::mem_fn(&X::cmf8_1) );
    BOOST_TEST( boost::mem_fn(&X::cmf8_1) != boost::mem_fn(&X::cmf8_2) );

    BOOST_TEST( boost::mem_fn(&X::mf8v_1) == boost::mem_fn(&X::mf8v_1) );
    BOOST_TEST( boost::mem_fn(&X::mf8v_1) != boost::mem_fn(&X::mf8v_2) );

    BOOST_TEST( boost::mem_fn(&X::cmf8v_1) == boost::mem_fn(&X::cmf8v_1) );
    BOOST_TEST( boost::mem_fn(&X::cmf8v_1) != boost::mem_fn(&X::cmf8v_2) );

  }

  {
    using fd::delegate;

    // 0

    BOOST_TEST(  delegate<int (X)>(&X::mf0_1).equal_to( delegate<int (X)>(&X::mf0_1) ) );
    BOOST_TEST( !delegate<int (X)>(&X::mf0_1).equal_to( delegate<int (X)>(&X::mf0_2) ) );

    BOOST_TEST(  delegate<int (X)>(&X::cmf0_1).equal_to( delegate<int (X)>(&X::cmf0_1) ) );
    BOOST_TEST( !delegate<int (X)>(&X::cmf0_1).equal_to( delegate<int (X)>(&X::cmf0_2) ) );

    BOOST_TEST(  delegate<void (X)>(&X::mf0v_1).equal_to( delegate<void (X)>(&X::mf0v_1) ) );
    BOOST_TEST( !delegate<void (X)>(&X::mf0v_1).equal_to( delegate<void (X)>(&X::mf0v_2) ) );

    BOOST_TEST(  delegate<void (X)>(&X::cmf0v_1).equal_to( delegate<void (X)>(&X::cmf0v_1) ) );
    BOOST_TEST( !delegate<void (X)>(&X::cmf0v_1).equal_to( delegate<void (X)>(&X::cmf0v_2) ) );

    // 1

    BOOST_TEST(  delegate<int (X, int)>(&X::mf1_1).equal_to( delegate<int (X, int)>(&X::mf1_1) ) );
    BOOST_TEST( !delegate<int (X, int)>(&X::mf1_1).equal_to( delegate<int (X, int)>(&X::mf1_2) ) );

    BOOST_TEST(  delegate<int (X, int)>(&X::cmf1_1).equal_to( delegate<int (X, int)>(&X::cmf1_1) ) );
    BOOST_TEST( !delegate<int (X, int)>(&X::cmf1_1).equal_to( delegate<int (X, int)>(&X::cmf1_2) ) );

    BOOST_TEST(  delegate<void (X, int)>(&X::mf1v_1).equal_to( delegate<void (X, int)>(&X::mf1v_1) ) );
    BOOST_TEST( !delegate<void (X, int)>(&X::mf1v_1).equal_to( delegate<void (X, int)>(&X::mf1v_2) ) );

    BOOST_TEST(  delegate<void (X, int)>(&X::cmf1v_1).equal_to( delegate<void (X, int)>(&X::cmf1v_1) ) );
    BOOST_TEST( !delegate<void (X, int)>(&X::cmf1v_1).equal_to( delegate<void (X, int)>(&X::cmf1v_2) ) );

    // 2

    BOOST_TEST(  delegate<int (X, int, int)>(&X::mf2_1).equal_to( delegate<int (X, int, int)>(&X::mf2_1) ) );
    BOOST_TEST( !delegate<int (X, int, int)>(&X::mf2_1).equal_to( delegate<int (X, int, int)>(&X::mf2_2) ) );

    BOOST_TEST(  delegate<int (X, int, int)>(&X::cmf2_1).equal_to( delegate<int (X, int, int)>(&X::cmf2_1) ) );
    BOOST_TEST( !delegate<int (X, int, int)>(&X::cmf2_1).equal_to( delegate<int (X, int, int)>(&X::cmf2_2) ) );

    BOOST_TEST(  delegate<void (X, int, int)>(&X::mf2v_1).equal_to( delegate<void (X, int, int)>(&X::mf2v_1) ) );
    BOOST_TEST( !delegate<void (X, int, int)>(&X::mf2v_1).equal_to( delegate<void (X, int, int)>(&X::mf2v_2) ) );

    BOOST_TEST(  delegate<void (X, int, int)>(&X::cmf2v_1).equal_to( delegate<void (X, int, int)>(&X::cmf2v_1) ) );
    BOOST_TEST( !delegate<void (X, int, int)>(&X::cmf2v_1).equal_to( delegate<void (X, int, int)>(&X::cmf2v_2) ) );

    // 3

    BOOST_TEST(  delegate<int (X, int, int, int)>(&X::mf3_1).equal_to( delegate<int (X, int, int, int)>(&X::mf3_1) ) );
    BOOST_TEST( !delegate<int (X, int, int, int)>(&X::mf3_1).equal_to( delegate<int (X, int, int, int)>(&X::mf3_2) ) );

    BOOST_TEST(  delegate<int (X, int, int, int)>(&X::cmf3_1).equal_to( delegate<int (X, int, int, int)>(&X::cmf3_1) ) );
    BOOST_TEST( !delegate<int (X, int, int, int)>(&X::cmf3_1).equal_to( delegate<int (X, int, int, int)>(&X::cmf3_2) ) );

    BOOST_TEST(  delegate<void (X, int, int, int)>(&X::mf3v_1).equal_to( delegate<void (X, int, int, int)>(&X::mf3v_1) ) );
    BOOST_TEST( !delegate<void (X, int, int, int)>(&X::mf3v_1).equal_to( delegate<void (X, int, int, int)>(&X::mf3v_2) ) );

    BOOST_TEST(  delegate<void (X, int, int, int)>(&X::cmf3v_1).equal_to( delegate<void (X, int, int, int)>(&X::cmf3v_1) ) );
    BOOST_TEST( !delegate<void (X, int, int, int)>(&X::cmf3v_1).equal_to( delegate<void (X, int, int, int)>(&X::cmf3v_2) ) );

    // 4

    BOOST_TEST(  delegate<int (X, int, int, int, int)>(&X::mf4_1).equal_to( delegate<int (X, int, int, int, int)>(&X::mf4_1) ) );
    BOOST_TEST( !delegate<int (X, int, int, int, int)>(&X::mf4_1).equal_to( delegate<int (X, int, int, int, int)>(&X::mf4_2) ) );

    BOOST_TEST(  delegate<int (X, int, int, int, int)>(&X::cmf4_1).equal_to( delegate<int (X, int, int, int, int)>(&X::cmf4_1) ) );
    BOOST_TEST( !delegate<int (X, int, int, int, int)>(&X::cmf4_1).equal_to( delegate<int (X, int, int, int, int)>(&X::cmf4_2) ) );

    BOOST_TEST(  delegate<void (X, int, int, int, int)>(&X::mf4v_1).equal_to( delegate<void (X, int, int, int, int)>(&X::mf4v_1) ) );
    BOOST_TEST( !delegate<void (X, int, int, int, int)>(&X::mf4v_1).equal_to( delegate<void (X, int, int, int, int)>(&X::mf4v_2) ) );

    BOOST_TEST(  delegate<void (X, int, int, int, int)>(&X::cmf4v_1).equal_to( delegate<void (X, int, int, int, int)>(&X::cmf4v_1) ) );
    BOOST_TEST( !delegate<void (X, int, int, int, int)>(&X::cmf4v_1).equal_to( delegate<void (X, int, int, int, int)>(&X::cmf4v_2) ) );

    // 5

    BOOST_TEST(  delegate<int (X, int, int, int, int, int)>(&X::mf5_1).equal_to( delegate<int (X, int, int, int, int, int)>(&X::mf5_1) ) );
    BOOST_TEST( !delegate<int (X, int, int, int, int, int)>(&X::mf5_1).equal_to( delegate<int (X, int, int, int, int, int)>(&X::mf5_2) ) );

    BOOST_TEST(  delegate<int (X, int, int, int, int, int)>(&X::cmf5_1).equal_to( delegate<int (X, int, int, int, int, int)>(&X::cmf5_1) ) );
    BOOST_TEST( !delegate<int (X, int, int, int, int, int)>(&X::cmf5_1).equal_to( delegate<int (X, int, int, int, int, int)>(&X::cmf5_2) ) );

    BOOST_TEST(  delegate<void (X, int, int, int, int, int)>(&X::mf5v_1).equal_to( delegate<void (X, int, int, int, int, int)>(&X::mf5v_1) ) );
    BOOST_TEST( !delegate<void (X, int, int, int, int, int)>(&X::mf5v_1).equal_to( delegate<void (X, int, int, int, int, int)>(&X::mf5v_2) ) );

    BOOST_TEST(  delegate<void (X, int, int, int, int, int)>(&X::cmf5v_1).equal_to( delegate<void (X, int, int, int, int, int)>(&X::cmf5v_1) ) );
    BOOST_TEST( !delegate<void (X, int, int, int, int, int)>(&X::cmf5v_1).equal_to( delegate<void (X, int, int, int, int, int)>(&X::cmf5v_2) ) );

    // 6

    BOOST_TEST(  delegate<int (X, int, int, int, int, int, int)>(&X::mf6_1).equal_to( delegate<int (X, int, int, int, int, int, int)>(&X::mf6_1) ) );
    BOOST_TEST( !delegate<int (X, int, int, int, int, int, int)>(&X::mf6_1).equal_to( delegate<int (X, int, int, int, int, int, int)>(&X::mf6_2) ) );

    BOOST_TEST(  delegate<int (X, int, int, int, int, int, int)>(&X::cmf6_1).equal_to( delegate<int (X, int, int, int, int, int, int)>(&X::cmf6_1) ) );
    BOOST_TEST( !delegate<int (X, int, int, int, int, int, int)>(&X::cmf6_1).equal_to( delegate<int (X, int, int, int, int, int, int)>(&X::cmf6_2) ) );

    BOOST_TEST(  delegate<void (X, int, int, int, int, int, int)>(&X::mf6v_1).equal_to( delegate<void (X, int, int, int, int, int, int)>(&X::mf6v_1) ) );
    BOOST_TEST( !delegate<void (X, int, int, int, int, int, int)>(&X::mf6v_1).equal_to( delegate<void (X, int, int, int, int, int, int)>(&X::mf6v_2) ) );

    BOOST_TEST(  delegate<void (X, int, int, int, int, int, int)>(&X::cmf6v_1).equal_to( delegate<void (X, int, int, int, int, int, int)>(&X::cmf6v_1) ) );
    BOOST_TEST( !delegate<void (X, int, int, int, int, int, int)>(&X::cmf6v_1).equal_to( delegate<void (X, int, int, int, int, int, int)>(&X::cmf6v_2) ) );

    // 7

    BOOST_TEST(  delegate<int (X, int, int, int, int, int, int, int)>(&X::mf7_1).equal_to( delegate<int (X, int, int, int, int, int, int, int)>(&X::mf7_1) ) );
    BOOST_TEST( !delegate<int (X, int, int, int, int, int, int, int)>(&X::mf7_1).equal_to( delegate<int (X, int, int, int, int, int, int, int)>(&X::mf7_2) ) );

    BOOST_TEST(  delegate<int (X, int, int, int, int, int, int, int)>(&X::cmf7_1).equal_to( delegate<int (X, int, int, int, int, int, int, int)>(&X::cmf7_1) ) );
    BOOST_TEST( !delegate<int (X, int, int, int, int, int, int, int)>(&X::cmf7_1).equal_to( delegate<int (X, int, int, int, int, int, int, int)>(&X::cmf7_2) ) );

    BOOST_TEST(  delegate<void (X, int, int, int, int, int, int, int)>(&X::mf7v_1).equal_to( delegate<void (X, int, int, int, int, int, int, int)>(&X::mf7v_1) ) );
    BOOST_TEST( !delegate<void (X, int, int, int, int, int, int, int)>(&X::mf7v_1).equal_to( delegate<void (X, int, int, int, int, int, int, int)>(&X::mf7v_2) ) );

    BOOST_TEST(  delegate<void (X, int, int, int, int, int, int, int)>(&X::cmf7v_1).equal_to( delegate<void (X, int, int, int, int, int, int, int)>(&X::cmf7v_1) ) );
    BOOST_TEST( !delegate<void (X, int, int, int, int, int, int, int)>(&X::cmf7v_1).equal_to( delegate<void (X, int, int, int, int, int, int, int)>(&X::cmf7v_2) ) );

    // 8

    BOOST_TEST(  delegate<int (X, int, int, int, int, int, int, int, int)>(&X::mf8_1).equal_to( delegate<int (X, int, int, int, int, int, int, int, int)>(&X::mf8_1) ) );
    BOOST_TEST( !delegate<int (X, int, int, int, int, int, int, int, int)>(&X::mf8_1).equal_to( delegate<int (X, int, int, int, int, int, int, int, int)>(&X::mf8_2) ) );

    BOOST_TEST(  delegate<int (X, int, int, int, int, int, int, int, int)>(&X::cmf8_1).equal_to( delegate<int (X, int, int, int, int, int, int, int, int)>(&X::cmf8_1) ) );
    BOOST_TEST( !delegate<int (X, int, int, int, int, int, int, int, int)>(&X::cmf8_1).equal_to( delegate<int (X, int, int, int, int, int, int, int, int)>(&X::cmf8_2) ) );

    BOOST_TEST(  delegate<void (X, int, int, int, int, int, int, int, int)>(&X::mf8v_1).equal_to( delegate<void (X, int, int, int, int, int, int, int, int)>(&X::mf8v_1) ) );
    BOOST_TEST( !delegate<void (X, int, int, int, int, int, int, int, int)>(&X::mf8v_1).equal_to( delegate<void (X, int, int, int, int, int, int, int, int)>(&X::mf8v_2) ) );

    BOOST_TEST(  delegate<void (X, int, int, int, int, int, int, int, int)>(&X::cmf8v_1).equal_to( delegate<void (X, int, int, int, int, int, int, int, int)>(&X::cmf8v_1) ) );
    BOOST_TEST( !delegate<void (X, int, int, int, int, int, int, int, int)>(&X::cmf8v_1).equal_to( delegate<void (X, int, int, int, int, int, int, int, int)>(&X::cmf8v_2) ) );
  }

  return boost::report_errors();
}

⌨️ 快捷键说明

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