//===----------------------------------------------------------------------===// // // The LLVM Compiler Infrastructure // // This file is dual licensed under the MIT and the University of Illinois Open // Source Licenses. See LICENSE.TXT for details. // //===----------------------------------------------------------------------===// // UNSUPPORTED: c++98, c++03, c++11 // <experimental/ratio> // template <class R1, class R2> constexpr bool ratio_less_v; #include <experimental/ratio> #include <type_traits> namespace ex = std::experimental; int main() { { typedef std::ratio<1, 2> R1; typedef std::ratio<1, 1> R2; static_assert( ex::ratio_less_v<R1, R2>, "" ); static_assert( ex::ratio_less_v<R1, R2> == std::ratio_less<R1, R2>::value, "" ); static_assert( std::is_same<decltype(ex::ratio_less_v<R1, R2>), const bool>::value , "" ); } { typedef std::ratio<1, 1> R1; typedef std::ratio<1, 1> R2; static_assert( !ex::ratio_less_v<R1, R2>, "" ); static_assert( ex::ratio_less_v<R1, R2> == std::ratio_less<R1, R2>::value, "" ); } { typedef std::ratio<2, 1> R1; typedef std::ratio<1, 1> R2; static_assert( !ex::ratio_less_v<R1, R2>, "" ); static_assert( ex::ratio_less_v<R1, R2> == std::ratio_less<R1, R2>::value, "" ); } }