Namespaces
Variants

std::ranges::views::empty, std::ranges::empty_view

cppreference.net에서
 
 
범위 라이브러리
범위 어댑터
 
헤더에 정의됨 <ranges>
template<class T>
    requires std::is_object_v<T>
class empty_view : public ranges::view_interface<empty_view<T>>
(1) (C++20부터)
namespace views {
    template<class T>
    constexpr empty_view<T> empty{};
}
(2) (C++20부터)
1) 특정 유형의 요소가 없는 뷰 를 생성하는 범위 팩토리입니다.
2) 의 변수 템플릿 empty_view.

멤버 함수

begin
[static]
nullptr를 반환 nullptr
(public static member function)
end
[static]
nullptr를 반환 nullptr
(public static member function)
data
[static]
nullptr를 반환 nullptr
(public static member function)
size
[static]
0을 반환 ​ 0 ​
(public static member function)
empty
[static]
true를 반환 true
(public static member function)
상속됨 ranges::view_interface
(C++23)
범위의 시작을 가리키는 상수 반복자를 반환합니다
(의 public 멤버 함수 std::ranges::view_interface<D>)
(C++23)
범위의 상수 반복자에 대한 종단점을 반환합니다
(의 public 멤버 함수 std::ranges::view_interface<D>)
파생 뷰가 비어 있지 않은지 여부를 반환합니다. 단, 오직 ranges::empty 가 적용 가능한 경우에만
(의 public 멤버 함수 std::ranges::view_interface<D>)
파생 뷰의 첫 번째 요소를 반환합니다. 단, forward_range
(의 public 멤버 함수 std::ranges::view_interface<D>)
파생 뷰의 마지막 요소를 반환합니다. 단, 오직 bidirectional_range와 common_range
(의 public 멤버 함수 std::ranges::view_interface<D>)
n번째 요소를 반환합니다. 단, 오직 random_access_range
(의 public 멤버 함수 std::ranges::view_interface<D>)

std::ranges::empty_view:: begin

static constexpr T * begin ( ) noexcept { return nullptr ; }
(C++20 이후)

empty_view 는 어떤 요소도 참조하지 않습니다.

std::ranges::empty_view:: end

static constexpr T * end ( ) noexcept { return nullptr ; }
(C++20 이후)

empty_view 는 어떤 요소도 참조하지 않습니다.

std::ranges::empty_view:: data

static constexpr T * data ( ) noexcept { return nullptr ; }
(C++20 이후)

empty_view 는 어떠한 요소도 참조하지 않습니다.

std::ranges::empty_view:: size

static constexpr std:: size_t size ( ) noexcept { return 0 ; }
(C++20부터)

empty_view 는 항상 비어 있습니다.

std::ranges::empty_view:: empty

static constexpr bool empty ( ) noexcept { return true ; }
(C++20 이후)

empty_view 는 항상 비어 있습니다.

헬퍼 템플릿

template < class T >
constexpr bool ranges:: enable_borrowed_range < ranges :: empty_view < T >> = true ;
(C++20 이후)

이 특수화는 ranges:: enable_borrowed_range 가 empty_view 가 borrowed_range 를 만족하도록 합니다.

참고 사항

비록 empty_view 가 view_interface 로부터 front , back , 그리고 operator [ ] 멤버 함수들을 획득하지만, 이들에 대한 호출은 항상 미정의 동작을 초래합니다. 왜냐하면 empty_view 는 항상 비어 있기 때문입니다.

상속된 operator bool 변환 함수는 항상 false 를 반환합니다.

예제

#include <ranges>
int main()
{
    namespace ranges = std::ranges;
    ranges::empty_view<long> e;
    static_assert(ranges::empty(e)); // operator bool 사용
    static_assert(0 == e.size());
    static_assert(nullptr == e.data());
    static_assert(nullptr == e.begin());
    static_assert(nullptr == e.end());
    static_assert(nullptr == e.cbegin());
    static_assert(nullptr == e.cend());
}

참고 항목

(C++17)
객체를 보유할 수도 있고 보유하지 않을 수도 있는 래퍼
(클래스 템플릿)
지정된 값의 단일 요소를 포함하는 view
(클래스 템플릿) (커스터마이제이션 포인트 객체)
range 의 모든 요소를 포함하는 view
(앨리어스 템플릿) (레인지 어댑터 객체)
다른 range 의 요소들로 구성된 view
(클래스 템플릿)