std::ratio_equal - cppreference.com

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

std::integral_constant

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