Namespaces
Variants

std::ranges::view_interface<D>:: operator bool

From cppreference.net
Ranges library
Range adaptors
constexpr explicit operator bool ( ) requires /* 아래 참조 */ ;
(1) (C++20부터)
constexpr explicit operator bool ( ) const requires /* 아래 참조 */ ;
(2) (C++20부터)

operator bool 멤버 함수의 기본 구현은 뷰가 비어 있지 않은지 확인합니다. 이는 파생 타입을 bool 로의 상황적 변환 가능 하게 만듭니다.

1) derived static_cast < D & > ( * this ) 로 설정합니다. requires 절의 표현식은 requires { ranges:: empty ( derived ) ; } 와 동일하며, 함수 본문은 return ! ranges:: empty ( derived ) ; 와 동등합니다.
2) (1) 과 동일하지만, derived static_cast < const D & > ( * this ) 인 경우입니다.

목차

반환값

false 파생된 타입의 값이 비어있는 경우( std::ranges::empty 로 결정됨), true 그렇지 않은 경우.

참고 사항

C++20에서, 표준 라이브러리 내 std::ranges::view_interface 에서 파생된 어떤 타입도 자체적인 operator bool 를 제공하지 않습니다. 이러한 타입들 거의 모두가 기본 구현을 사용합니다.

주목할 만한 예외는 std::ranges::basic_istream_view 입니다. 해당 반복자 타입이 forward_iterator 를 결코 만족하지 않기 때문에, 뷰는 상속된 operator bool 를 사용할 수 없습니다.

예제

#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';
}

출력:

Has odd numbers: true
Has negative numbers: false

참고 항목

범위가 비어 있는지 여부를 확인
(커스터마이제이션 포인트 객체)
파생된 뷰가 비어 있는지 여부를 반환하며, sized_range 또는 forward_range 를 만족하는 경우에만 제공됨
(public member function)
(C++17)
컨테이너가 비어 있는지 여부를 확인
(function template)