From cppreference.com
template<classR1,classR2>structratio_equal:std::integral_constant<bool,/* see below */>{};(since C++11)If the ratios R1 and R2 are equal, provides the member constant value equal true. Otherwise, value is false.
Helper variable template
template<classR1,classR2>constexprboolratio_equal_v=ratio_equal<R1,R2>::value;(since C++17)Inherited from
Member constants
value
[static]
true if R1::num==R2::num&&R1::den==R2::den, false otherwise
(public static member constant)Member functions
operator bool
converts the object to bool, returns value
(public member function)operator()
(C++14)
returns value
(public member function)Member types
Type Definition value_typebooltypestd::integral_constant<bool,value>Possible implementation
template<classR1,classR2>structratio_equal:publicstd::integral_constant<bool,R1::num==R2::num&&R1::den==R2::den>{};Example
Run this code
#include<iostream>#include<ratio>intmain(){constexprboolequ=std::ratio_equal_v<std::ratio<2,3>,std::ratio<6,9>>;static_assert(equ);std::cout<<"2/3 "<<(equ?"==":"!=")<<" 6/9\n";}Output:
2/3 == 6/9 See also