std::in_range
Aus cppreference.com
<tbody>
</tbody>
| definiert in Header <utility>
|
||
template< class R, class T > constexpr bool in_range( T t ) noexcept; |
||
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:
false
true
Referenzen
(C++20) |
gibt den kleineren der beiden Werte zurück (niebloid) |
(C++20) |
gibt den größeren der beiden Werte zurück (niebloid) |
(C++20) |
spannt einen Wert zwischen zwei Randwerten ein (niebloid) |
(C++20) |
Funktion zur linearen Interpolation (Funktion) |