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

FreeBSD Manual Pages

  
 
  

home | help
std::ranges...operatorbool(3) C++ Standard Libarystd::ranges...operatorbool(3)

NAME
       std::ranges::view_interface::operatorbool   -  std::ranges::view_inter-
       face::operatorbool

Synopsis
	  constexpr  explicit  operator	 bool()	 requires  /*  see  below  */;
       (1) (since C++20)
	  constexpr  explicit  operator	bool() const requires /* see below */;
       (2) (since C++20)

	  The default implementation of	operator bool member  function	checks
       whether the view
	  is  non-empty. It makes the derived type contextually	convertible to
       bool.

	  1) Let derived be static_cast<D&>(*this). The	expression in the  re-
       quires-clause is
	  equal	to requires { ranges::empty(derived); }, and the function body
       is equivalent
	  to return !ranges::empty(derived);.
	  2) Same as (1), except that derived is static_cast<const D&>(*this).

Parameters
	  (none)

Return value
	  false	 if  the  value	 of  the  derived type is empty	(determined by
       std::ranges::empty),
	  true otherwise.

Notes
	  In C++20, no type derived from  std::ranges::view_interface  in  the
       standard	library
	  provides  their own operator bool. Almost all	of these types use the
       default
	  implementation.

	  A notable exception is std::ranges::basic_istream_view. For its  it-
       erator type never
	  satisfies forward_iterator, the view cannot use the inherited	opera-
       tor bool.

Example
       // Run this code

	#include <array>
	#include <iostream>
	#include <ranges>

	int main()
	{
	    const std::array ints {0, 1, 2, 3, 4};
	    auto  odds = ints |	std::views::filter([](int i) { return 0	!= i %
       2; });
	    auto negs =	ints | std::views::filter([](int i) { return  i	 <  0;
       });
	    std::cout << std::boolalpha
		      << "Has odd numbers: " <<	(!!odds) << ' '	<< '\n'
		      << "Has negative numbers:	" << (!!negs) << ' ' <<	'\n';
	}

Output:
	Has odd	numbers: true
	Has negative numbers: false

See also
	  ranges::empty	checks whether a range is empty
	  (C++20)	(customization point object)
	  empty		returns	whether	the derived view is empty. Provided if
       it satisfies
	  (C++20)	sized_range or forward_range.
			(public	member function)
	  empty		checks whether the container is	empty
	  (C++17)	(function template)

http://cppreference.com		  2024.06.10	 std::ranges...operatorbool(3)

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

home | help