// Copyright 2020 Peter Dimov // Distributed under the Boost Software License, Version 1.0. // https://www.boost.org/LICENSE_1_0.txt) #include #include #include #include #include // int main() { BOOST_TEST_EQ( boost::protect( std::plus() )( 1, 2 ), 3 ); BOOST_TEST_EQ( boost::protect( std::minus() )( 1, 2 ), -1 ); BOOST_TEST_EQ( boost::protect( std::multiplies() )( 1, 2 ), 2 ); BOOST_TEST_EQ( boost::protect( std::divides() )( 1, 2 ), 0 ); BOOST_TEST_EQ( boost::protect( std::modulus() )( 1, 2 ), 1 ); BOOST_TEST_EQ( boost::protect( std::negate() )( 1 ), -1 ); BOOST_TEST_EQ( boost::protect( std::equal_to() )( 1, 2 ), false ); BOOST_TEST_EQ( boost::protect( std::not_equal_to() )( 1, 2 ), true ); BOOST_TEST_EQ( boost::protect( std::greater() )( 1, 2 ), false ); BOOST_TEST_EQ( boost::protect( std::less() )( 1, 2 ), true ); BOOST_TEST_EQ( boost::protect( std::greater_equal() )( 1, 2 ), false ); BOOST_TEST_EQ( boost::protect( std::less_equal() )( 1, 2 ), true ); BOOST_TEST_EQ( boost::protect( std::logical_and() )( 1, 2 ), true ); BOOST_TEST_EQ( boost::protect( std::logical_or() )( 1, 2 ), true ); BOOST_TEST_EQ( boost::protect( std::logical_not() )( 1 ), false ); #if !BOOST_WORKAROUND(BOOST_MSVC, < 1600) BOOST_TEST_EQ( boost::protect( std::bit_and() )( 1, 2 ), 0 ); BOOST_TEST_EQ( boost::protect( std::bit_or() )( 1, 2 ), 3 ); BOOST_TEST_EQ( boost::protect( std::bit_xor() )( 1, 2 ), 3 ); #endif return boost::report_errors(); }