std::ranges::view_interface<D>:: empty
|
constexpr
bool
empty
(
)
requires ranges:: sized_range < D > || ranges:: forward_range < D > ; |
(1) | (C++20 이후) |
|
constexpr
bool
empty
(
)
const
requires ranges:: sized_range < const D > || ranges:: forward_range < const D > ; |
(2) | (C++20 이후) |
empty()
멤버 함수의 기본 구현은 파생 타입 객체의 크기가
0
인지(유효한 경우), 또는 시작 반복자와 센티넬이 동일한지 비교하여 확인합니다.
D
가
sized_range
를 만족하는 경우
return
ranges::
size
(
derived
)
==
0
;
와 동일합니다. 그렇지 않은 경우
return
ranges::
begin
(
derived
)
==
ranges::
end
(
derived
)
;
와 동일합니다.
목차 |
반환값
true
파생된 타입의 객체 크기가
0
인 경우(
D
가
std::ranges::sized_range
를 만족할 때), 또는 시작 반복자와 센티넬이 동일하게 비교되는 경우,
false
그렇지 않은 경우.
참고 사항
다음 파생 타입들은
empty
의 기본 구현을 사용할 수 있습니다:
- std::ranges::common_view
- std::ranges::drop_view
- std::ranges::drop_while_view
- std::ranges::elements_view
- std::ranges::filter_view
- std::ranges::join_view
- std::ranges::lazy_split_view
- std::ranges::reverse_view
- std::ranges::single_view
- std::ranges::split_view
- std::ranges::take_view
- std::ranges::take_while_view
- std::ranges::transform_view
| (C++26부터) |
비록
std::ranges::basic_istream_view
가
std::ranges::view_interface
를 상속받고
empty()
멤버 함수를 선언하지 않지만, 기본 구현을 사용할 수 없습니다. 왜냐하면 이것은
std::ranges::sized_range
도
std::ranges::forward_range
도 결코 만족시키지 않기 때문입니다.
예제
#include <array> #include <ranges> int main() { constexpr std::array a{0, 1, 2, 3, 4}; static_assert(!std::ranges::single_view(a).empty()); static_assert((a | std::views::take(0)).empty()); static_assert(!(a | std::views::take(5)).empty()); static_assert((a | std::views::drop(5)).empty()); static_assert(!(a | std::views::drop(3)).empty()); static_assert(std::views::iota(0,0).empty()); static_assert(!std::views::iota(0).empty()); }
결함 보고서
다음의 동작 변경 결함 보고서들은 이전에 발표된 C++ 표준에 소급 적용되었습니다.
| DR | 적용 대상 | 게시된 동작 | 올바른 동작 |
|---|---|---|---|
| LWG 3715 | C++20 |
empty()
는
forward_range
타입만 지원됨
|
sized_range
전용 타입도 지원됨
|
참고 항목
|
(C++17)
|
컨테이너가 비어 있는지 확인합니다
(함수 템플릿) |
|
(C++20)
|
범위가 비어 있는지 확인합니다
(커스터마이제이션 포인트 객체) |