Namespaces
Variants

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

From cppreference.net
Ranges library
Range adaptors
Определено в заголовочном файле <ranges>
template < class T >

requires std:: is_object_v < T >

class empty_view : public ranges:: view_interface < empty_view < T >>
(1) (since C++20)
namespace views {

template < class T >
constexpr empty_view < T > empty { } ;

}
(2) (since C++20)
1) Фабрика диапазонов, которая создаёт view без элементов определённого типа.
2) Переменная шаблон для empty_view .

Содержание

Функции-члены

begin
[static]
возвращает nullptr
(public static member function)
end
[static]
возвращает nullptr
(public static member function)
data
[static]
возвращает nullptr
(public static member function)
size
[static]
возвращает 0
(public static member function)
empty
[static]
возвращает true
(public static member function)
Наследуется от std::ranges::view_interface
(C++23)
возвращает константный итератор на начало диапазона
(public member function of std::ranges::view_interface<D> )
(C++23)
возвращает страж для константного итератора диапазона
(public member function of std::ranges::view_interface<D> )
возвращает, является ли производное представление непустым, предоставляется только если ranges::empty применимо к нему
(public member function of std::ranges::view_interface<D> )
возвращает первый элемент в производном представлении, предоставляется если оно удовлетворяет forward_range
(public member function of std::ranges::view_interface<D> )
возвращает последний элемент в производном представлении, предоставляется только если оно удовлетворяет bidirectional_range и common_range
(public member function of std::ranges::view_interface<D> )
возвращает n элемент в производном представлении, предоставляется только если оно удовлетворяет random_access_range
(public member function of 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 ; }
(since 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 получает функции-члены front , back и operator [ ] от view_interface , вызовы этих функций всегда приводят к неопределённому поведению, поскольку 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 содержащий единственный элемент указанного значения
(шаблон класса) (объект точки настройки)
view включающий все элементы range
(псевдоним шаблона) (объект адаптера диапазона)
view элементов некоторого другого range
(шаблон класса)