cpp/ranges/empty view:修订间差异

来自cppreference.com
Fruderica留言 | 贡献
成员函数:​ P1523R1
Fruderica留言 | 贡献
P1870R1 safe_range
第17行: 第17行:
@1@ 产生无特定类型元素的 {{lconcept|view}} 的范围适配器。
@1@ 产生无特定类型元素的 {{lconcept|view}} 的范围适配器。
@2@ {{tt|empty_view}} 的变量模板。
@2@ {{tt|empty_view}} 的变量模板。


===成员函数===
===成员函数===
第68行: 第75行:


{{tt|empty_view}} 始终为空。
{{tt|empty_view}} 始终为空。
}}
===非成员函数===
{{member | begin, end{{small|(std::ranges::empty_view)}} |
{{dcl begin}}
{{dcl | num=1 |
friend constexpr T* begin(empty_view) noexcept { return nullptr; }
}}
{{dcl | num=2 |
friend constexpr T* end(empty_view) noexcept { return nullptr; }
}}
{{dcl end}}
这些函数对通常[[cpp/language/unqualified lookup|无限定]]或[[cpp/language/qualified lookup|有限定查找]]不可见,而只能在 {{tt|std::ranges::empty_view<T>}} 为参数的关联类时由[[cpp/language/adl|参数依赖查找]]找到。
}}
}}



2019年12月16日 (一) 09:00的版本

 
 
范围库
范围适配器
 
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> inline constexpr empty_view<T> empty{};
}
(2) (C++20 起)
1) 产生无特定类型元素的 view 的范围适配器。
2) empty_view 的变量模板。

辅助模板

template<class T>
inline constexpr bool enable_safe_range<ranges::empty_view<T>> = true;

ranges::enable_safe_range 的此特化使得 empty_view 满足 [[cpp/未识别的概念/safe_range|safe_range]] 。

成员函数

std::ranges::empty_view::begin

static constexpr T* begin() noexcept { return nullptr; }

empty_view 不引用任何元素。

std::ranges::empty_view::end

static constexpr T* end() noexcept { return nullptr; }

empty_view 不引用任何元素。

std::ranges::empty_view::data

static constexpr T* data() noexcept { return nullptr; }

empty_view 不引用任何元素。

std::ranges::empty_view::size

static constexpr std::size_t size() noexcept { return 0; }

empty_view 始终为空。

std::ranges::empty_view::empty

static constexpr bool empty() noexcept { return true; }

empty_view 始终为空。

示例

#include <ranges>

int main()
{
    std::ranges::empty_view<int> e;
    static_assert(std::ranges::empty(e));
    static_assert(0 == e.size());
}