Namespaces
Variants

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

Из ru.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
(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)
Наследовано от ranges::view_interface
(C++23)
возвращает константный итератор на начало диапазона
(открытая функция-член std::ranges::view_interface<D>)
(C++23)
возвращает дозорный для константного итератора диапазона
(открытая функция-член std::ranges::view_interface<D>)
возвращает, не пусто ли производное представление, только если ranges::empty применима к нему
(открытая функция-член std::ranges::view_interface<D>)
возвращает первый элемент в производном представлении, только если оно удовлетворяет forward_range
(открытая функция-член std::ranges::view_interface<D>)
возвращает последний элемент в производном представлении, только если оно удовлетворяет bidirectional_range и common_range
(открытая функция-член std::ranges::view_interface<D>)
возвращает n-й элемент в производном представлении, только если оно удовлетворяет random_access_range
(открытая функция-член 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
(шаблон класса)