failed_constexpr_test.cpp 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. // Copyright 2018 Peter Dimov.
  2. // Distributed under the Boost Software License, Version 1.0.
  3. #include <boost/system/error_code.hpp>
  4. #include <boost/config/pragma_message.hpp>
  5. #include <boost/static_assert.hpp>
  6. #if !defined(BOOST_SYSTEM_HAS_CONSTEXPR)
  7. BOOST_PRAGMA_MESSAGE("Skipping constexpr test, BOOST_SYSTEM_HAS_CONSTEXPR isn't defined")
  8. int main() {}
  9. #else
  10. using namespace boost::system;
  11. constexpr error_code ec1( 1, system_category() );
  12. BOOST_STATIC_ASSERT( ec1.failed() );
  13. BOOST_STATIC_ASSERT( ec1 );
  14. BOOST_STATIC_ASSERT( !!ec1 );
  15. constexpr error_code ec2( 2, generic_category() );
  16. BOOST_STATIC_ASSERT( ec2.failed() );
  17. BOOST_STATIC_ASSERT( ec2 );
  18. BOOST_STATIC_ASSERT( !!ec2 );
  19. constexpr error_code ec3;
  20. BOOST_STATIC_ASSERT( !ec3.failed() );
  21. BOOST_STATIC_ASSERT( ec3? false: true );
  22. BOOST_STATIC_ASSERT( !ec3 );
  23. constexpr error_condition en1( 1, system_category() );
  24. BOOST_STATIC_ASSERT( en1.failed() );
  25. BOOST_STATIC_ASSERT( en1 );
  26. BOOST_STATIC_ASSERT( !!en1 );
  27. constexpr error_condition en2( 2, generic_category() );
  28. BOOST_STATIC_ASSERT( en2.failed() );
  29. BOOST_STATIC_ASSERT( en2 );
  30. BOOST_STATIC_ASSERT( !!en2 );
  31. constexpr error_condition en3;
  32. BOOST_STATIC_ASSERT( !en3.failed() );
  33. BOOST_STATIC_ASSERT( en3? false: true );
  34. BOOST_STATIC_ASSERT( !en3 );
  35. int main()
  36. {
  37. }
  38. #endif