std::islessequal(3)
π std::islessequal(3) β C++ Standard Libary β¨
Okay bestie, gather round: this is std::islessequal from the C++ Standard Libary, and itβs lowkey the politest way to ask βis x less than or equal to y?β without causing floating-point drama. π«Ά
πΈ NAME πΈ
std::islessequal β literally std::islessequal, thatβs the whole name, periodt.
π Synopsis π
Okay so the synopsis is giving βhere are all the overloads,β and yes, weβre keeping every single one because details are the moment. π
Defined in header <cmath>
bool islessequal( float x, float y );
(since
C++11)
bool islessequal( double x, double y ); (until
C++23)
bool islessequal( long double x, long double y );
constexpr bool islessequal( /* floating-point-type
*/ x, (1) (since
C++23)
/* floating-point-type
*/ y );
Additional overloads
Defined in header <cmath>
template< class Arithmetic1, class Arithmetic2 > (A) (since
C++11)
bool islessequal( Arithmetic1 x, Arithmetic2 y );
(constexpr since C++23)
1) Determines if the floating point number x is less than or equal to the floating-point number y, without setting floating-point exceptions. The library provides overloads for all cv-unqualified floating-point types as the type of the parameters x and y. (since C++23)
A) Additional overloads are provided for all other combinations of arithmetic types.
π Parameters π
x,yβ floating-point or integer values.
β¨ Return value β¨
true if x <= y, false otherwise.
π₯ Notes π₯
Okay so the built-in operator<= for floating-point numbers may raise FE_INVALID if one or both of the arguments is NaN. This function is a βquietβ version of operator<=. No cap. π
The additional overloads are not required to be provided exactly as (A). They only need to be sufficient to ensure that, for their first argument num1 and second argument num2:
- If
num1ornum2has typelong double, thenstd::islessequal(num1, num2)has the same effect asstd::islessequal(static_cast<long double>(num1), static_cast<long double>(num2)). - Otherwise, if
num1and/ornum2has typedoubleor an integer type, thenstd::islessequal(num1, num2)has the same effect as (until C++23)std::islessequal(static_cast<double>(num1), static_cast<double>(num2)). - Otherwise, if
num1ornum2has typefloat, thenstd::islessequal(num1, num2)has the same effect asstd::islessequal(static_cast<float>(num1), static_cast<float>(num2)).
If num1 and num2 have arithmetic types, then std::islessequal(num1, num2) has the same effect as std::islessequal(static_cast</* common-floating-point-type */>(num1), static_cast</* common-floating-point-type */>(num2)), where /* common-floating-point-type */ is the floating-point type with the greatest floating-point conversion rank and greatest floating-point conversion subrank between the types of num1 and num2; (since C++23) arguments of integer type are considered to have the same floating-point conversion rank as double.
If no such floating-point type with the greatest rank and subrank exists, then overload resolution does not result in a usable candidate from the overloads provided. π
π¦ See also π¦
less_equalβ function object implementingx <= y(class template)isgreaterequalβ checks if the first floating-point argument is greater or equal than the second (function) (C++11)- C documentation for
islessequal
Source/version/date check, bestie: http://cppreference.com Β· 2024.06.10 Β· std::islessequal(3) β slay and goodbye πβ¨
π¦ where this page comes from
- nixpkgs unstable: stdman 2024.07.05
- opensuse-leap 16.0: stdman 2024.07.05-bp160.1.9 Β· MIT
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms