rvalue_test.cpp 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. // rvalue_test - test lambda function objects with rvalue arguments
  2. //
  3. // Copyright (c) 2007 Peter Dimov
  4. //
  5. // Distributed under the Boost Software License, Version 1.0.
  6. // See accompanying file LICENSE_1_0.txt or copy at
  7. // http://www.boost.org/LICENSE_1_0.txt
  8. #include <boost/lambda/lambda.hpp>
  9. #include <boost/detail/lightweight_test.hpp>
  10. int main()
  11. {
  12. using namespace boost::lambda;
  13. int x = 0;
  14. int const y = 1;
  15. int const z = 2;
  16. BOOST_TEST( _1( x ) == 0 );
  17. BOOST_TEST( _1( y ) == 1 );
  18. BOOST_TEST( _1( 2 ) == 2 );
  19. BOOST_TEST( _2( x, x ) == 0 );
  20. BOOST_TEST( _2( x, y ) == 1 );
  21. BOOST_TEST( _2( x, 2 ) == 2 );
  22. BOOST_TEST( _2( 4, x ) == 0 );
  23. BOOST_TEST( _2( 4, y ) == 1 );
  24. BOOST_TEST( _2( 4, 2 ) == 2 );
  25. (_1 = _2)( x, y );
  26. BOOST_TEST( x == y );
  27. (_1 = _2)( x, 3 );
  28. BOOST_TEST( x == 3 );
  29. (_2 = _1)( z, x );
  30. BOOST_TEST( x == z );
  31. (_2 = _1)( 4, x );
  32. BOOST_TEST( x == 4 );
  33. BOOST_TEST( _3( x, x, x ) == x );
  34. BOOST_TEST( _3( x, x, y ) == y );
  35. BOOST_TEST( _3( x, x, 2 ) == 2 );
  36. BOOST_TEST( _3( x, 5, x ) == x );
  37. BOOST_TEST( _3( x, 5, y ) == y );
  38. BOOST_TEST( _3( x, 5, 2 ) == 2 );
  39. BOOST_TEST( _3( 9, 5, x ) == x );
  40. BOOST_TEST( _3( 9, 5, y ) == y );
  41. BOOST_TEST( _3( 9, 5, 2 ) == 2 );
  42. return boost::report_errors();
  43. }