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) (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
(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 ; }
(since C++20)

empty_view 不引用任何元素。

std::ranges::empty_view:: end

static constexpr T * end ( ) noexcept { return nullptr ; }
(since C++20)

empty_view 不引用任何元素。

std::ranges::empty_view:: data

static constexpr T * data ( ) noexcept { return nullptr ; }
(since C++20)

empty_view 不引用任何元素。

std::ranges::empty_view:: size

static constexpr std:: size_t size ( ) noexcept { return 0 ; }
(since 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 view_interface 获得了 front back operator [ ] 成员函数,但由于 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
(类模板) (定制点对象)
包含 range 所有元素的 view
(别名模板) (范围适配器对象)
其他 range 元素的 view
(类模板)