Namensräume
Varianten

std::in_range

Aus cppreference.com
< cpp‎ | utility
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

gibt den kleineren der beiden Werte zurück
(niebloid)[edit]
gibt den größeren der beiden Werte zurück
(niebloid)[edit]
spannt einen Wert zwischen zwei Randwerten ein
(niebloid)[edit]
(C++20)
Funktion zur linearen Interpolation
(Funktion)[edit]
close