- ratio[meta header]
- std[meta namespace]
- class template[meta id-type]
- cpp11[meta cpp]
namespace std {
template <class R1, class R2>
struct ratio_less;
template <class R1, class R2>
inline constexpr bool ratio_less_v
= ratio_less<R1, R2>::value; // C++17
}
ratio_less
は、2つのratio
において、左辺が右辺より小さいかを判定するクラステンプレートである。
ratio_less
は、R1::num * R2::den < R2::num * R1::den
であればtrue_type
から派生し、そうでなければfalse_type
から派生する。
実装によっては、演算アルゴリズムによってオーバーフローが起こる可能性がある。オーバーフローが起こった場合、プログラムは不適格となる。
#include <ratio>
int main()
{
using r1 = std::ratio<2, 5>;
using r2 = std::ratio<3, 5>;
static_assert(std::ratio_less<r1, r2>::value == true, "r1 < r2");
}
- std::ratio_less[color ff0000]
- std::ratio[link ratio.md]
- C++11
- Clang: 3.0 [mark verified]
- GCC: 4.4.7 [mark verified]
- Visual C++: ??