constexpr_test.cpp 1.1 KB

1234567891011121314151617181920212223242526272829
  1. ///////////////////////////////////////////////////////////////////////////////
  2. // Copyright 2015 John Maddock. Distributed under the Boost
  3. // Software License, Version 1.0. (See accompanying file
  4. // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
  5. #include <boost/rational.hpp>
  6. int main()
  7. {
  8. #ifndef BOOST_NO_CXX11_CONSTEXPR
  9. constexpr boost::rational<int> i1;
  10. constexpr boost::rational<int> i2(3);
  11. constexpr boost::rational<long long> i3(i2);
  12. constexpr boost::rational<short> i4(i2);
  13. constexpr boost::rational<long long> i5(23u); // converting constructor
  14. // constexpr boost::rational<short> i6(23u); // Not supported, needs an explicit typecast in constructor.
  15. static_assert(i1.numerator() == 0, "constexpr test");
  16. static_assert(i1.denominator() == 1, "constexpr test");
  17. static_assert(i2.numerator() == 3, "constexpr test");
  18. static_assert(i2.denominator() == 1, "constexpr test");
  19. static_assert(i3.numerator() == 3, "constexpr test");
  20. static_assert(i3.denominator() == 1, "constexpr test");
  21. static_assert(!i1, "constexpr test");
  22. static_assert(i2, "constexpr test");
  23. #endif
  24. return 0;
  25. }