| Type traits | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Compile-time rational arithmetic | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Compile-time integer sequences | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
(C++14) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
(C++11) | ||||
| Arithmetic | ||||
ratio_add (C++11) | ||||
(C++11) | ||||
(C++11) | ||||
(C++11) | ||||
| Comparison | ||||
(C++11) | ||||
(C++11) | ||||
(C++11) | ||||
(C++11) | ||||
(C++11) | ||||
(C++11) |
Defined in header <ratio> | ||
template<class R1,class R2> using ratio_add=/* see below */; | (since C++11) | |
The alias templatestd::ratio_add denotes the result of adding two exact rational fractions represented by thestd::ratio specializationsR1 andR2.
The result is astd::ratio specializationstd::ratio<U, V>, such that givenNum== R1::num* R2::den+ R2::num* R1::den andDenom== R1::den* R2::den (computed without arithmetic overflow),U isstd::ratio<Num, Denom>::num andV isstd::ratio<Num, Denom>::den.
IfU orV is not representable instd::intmax_t, the program is ill-formed. IfNum orDenom is not representable instd::intmax_t, the program is ill-formed unless the implementation yields correct values forU andV.
The above definition requires that the result ofstd::ratio_add<R1, R2> be already reduced to lowest terms; for example,std::ratio_add<std::ratio<1,3>,std::ratio<1,6>> is the same type asstd::ratio<1,2>.
#include <iostream>#include <ratio> int main(){using two_third=std::ratio<2,3>;using one_sixth=std::ratio<1,6>;using sum= std::ratio_add<two_third, one_sixth>; std::cout<<"2/3 + 1/6 = "<< sum::num<<'/'<< sum::den<<'\n';}
Output:
2/3 + 1/6 = 5/6
(C++11) | subtracts tworatio objects at compile-time(alias template)[edit] |