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 (общедоступная статическая функция-член) |
Унаследовано от |
|
|
(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; }
| (начиная с 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());
}
См. также
|
(C++17) | обёртка, которая может содержать объект, а может и не содержать (шаблон класса) |
|
(C++20) | view, содержащий единственный элемент заданного значения(шаблон класса) (объект-точка настройки) |
|
(C++20) | view, включающее все элементы range(шаблон псевдонима) (объект-адаптер диапазона) |
|
(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