Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
std::in_range(3)	      C++ Standard Libary	      std::in_range(3)

NAME
       std::in_range - std::in_range

Synopsis
	  Defined in header <utility>
	  template< class R, class T >		    (since C++20)
	  constexpr bool in_range( T t ) noexcept;

	  Returns true if the value of t is in the range of values that	can be
       represented in
	  R, that is, if t can be converted to R without data loss.

	  It  is  a compile-time error if either T or R	is not a signed	or un-
       signed integer type
	  (including standard integer type and extended	integer	type).

Parameters
	  t - value to test

Return value
	  true if the value of t is representable in R,	false otherwise.

Possible implementation
	  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());
	  }

Notes
	  This function	cannot be used with enums (including std::byte), char,
       char8_t,
	  char16_t, char32_t, wchar_t and bool.

	  Feature-test macro: __cpp_lib_integer_comparison_functions

Example
       // Run this code

	#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

See also
	  ranges::min	returns	the smaller of the given values
	  (C++20)	(niebloid)
	  ranges::max	returns	the greater of the given values
	  (C++20)	(niebloid)
	  ranges::clamp	clamps a value between a pair of boundary values
	  (C++20)	(niebloid)
	  lerp		linear interpolation function
	  (C++20)	(function)

http://cppreference.com		  2022.07.31		      std::in_range(3)

Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=std::in_range&sektion=3&manpath=FreeBSD+Ports+15.0>

home | help