Spec-Zone.ru › C++

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

Определён в заголовочном файле <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) Фабрика диапазонов, создающая view без элементов указанного типа.
2) Шаблон переменной для empty_view.

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

begin
[static]
возвращает nullptr
(общедоступная статическая функция-член)
end
[static]
возвращает nullptr
(общедоступная статическая функция-член)
data
[static]
возвращает nullptr
(общедоступная статическая функция-член)
size
[static]
возвращает 0
(общедоступная статическая функция-член)
empty
[static]
возвращает true
(общедоступная статическая функция-член)
Унаследовано от std::ranges::view_interface
cbegin
(C++23)
возвращает константный итератор на начало диапазона
(общедоступная функция-член std::ranges::view_interface<D>)
cend
(C++23)
возвращает сентинел для константного итератора диапазона
(общедоступная функция-член std::ranges::view_interface<D>)
operator bool
возвращает значение, указывающее, что производное представление не пусто; предоставляется только если к нему применимо ranges::empty
(общедоступная функция-член std::ranges::view_interface<D>)
front
возвращает первый элемент производного представления, если оно удовлетворяет требованиям forward_range
(общедоступная функция-член std::ranges::view_interface<D>)
back
возвращает последний элемент производного представления; предоставляется только если оно удовлетворяет требованиям bidirectional_range и common_range
(общедоступная функция-член std::ranges::view_interface<D>)
operator[]
возвращает элемент производного представления с индексом 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; }
(начиная с 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)); // uses 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());
}

См. также

optional
(C++17)
обёртка, которая может содержать объект, а может и не содержать
(шаблон класса)
ranges::single_viewviews::single
(C++20)
view, содержащий единственный элемент заданного значения
(шаблон класса) (объект-точка настройки)
views::all_tviews::all
(C++20)
view, включающее все элементы range
(шаблон псевдонима) (объект-адаптер диапазона)
ranges::ref_view
(C++20)
view элементов другого range
(шаблон класса)

© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/cpp/ranges/empty_view

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API