std::in_range
Aus cppreference.com
definiert in Header <utility> | ||
template<class R, class T > constexprbool 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.
Inhaltsverzeichnis |
[Bearbeiten] Parameter
t | - | Wert, der getestet werden soll |
[Bearbeiten] Rückgabewert
true falls der Wert t
durch den Typ R
verlustfrei dargestellt werden kann, false anderenfalls.
[Bearbeiten] Mögliche Implementierung
template<class R, class T >constexprbool in_range( T t )noexcept{returnstd::cmp_greater_equal(t, std::numeric_limits<R>::min())&&std::cmp_less_equal(t, std::numeric_limits<R>::max());} |
[Bearbeiten] 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
[Bearbeiten] 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
[Bearbeiten] 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) |