std::in_range – cppreference.com
Aus cppreference.com
<tbody> </tbody>
| definiert in Header <utility> |
||
|
|
||
Der Rückgabewert ist true, falls der Wert t im Wertebereich von R liegt, d.h. falls t nach R ohne Verluste konvertiert werden kann.
Es liegt ein Fehler zur Kompilationszeit vor, falls weder T noch R ein vorzeichenbehafteter oder vorzeichenloser Ganzzahlentyp ist. Dieses schließt sowohl Standard- als auch erweiterte Ganzzahltypen ein.
Parameter
| t | - | Wert, der getestet werden soll |
Rückgabewert
true falls der Wert t durch den Typ R verlustfrei dargestellt werden kann, false anderenfalls.
Mögliche Implementierung
template< class R, class T > constexpr bool in_range( T t ) noexcept { return std::cmp_greater_equal(t, std::numeric_limits<R>::min()) && std::cmp_less_equal(t, std::numeric_limits<R>::max()); }
Anmerkungen
Diese Funktion kann nicht benutzt werden für enums und Zeichen ({ltt|cpp/types/byte|std::byte}}), char, char8_t, char16_t, char32_t, wchar_t and bool).
Feature testing macro: __cpp_lib_integer_comparison_functions
Beispiele
#include <utility> #include <iostream> int main() { std::cout << std::boolalpha; std::cout << std::in_range<std::size_t>(-1) << '\n'; std::cout << std::in_range<std::size_t>(42) << '\n'; }
Output:
Referenzen
(C++20) |
gibt den kleineren der beiden Werte zurück (niebloid) [edit] |
(C++20) |
gibt den größeren der beiden Werte zurück (niebloid) [edit] |
(C++20) |
spannt einen Wert zwischen zwei Randwerten ein (niebloid) [edit] |
(C++20) |
Funktion zur linearen Interpolation (Funktion) [edit] |