std::ranges::views::empty, std::ranges::empty_view
來自 cppreference.com
| 定義於標頭檔案 <ranges> |
||
| template<class T> requires std::is_object_v<T> |
(1) | (C++20 起) |
| namespace views { template<class T> |
(2) | (C++20 起) |
1) 一個範圍工廠,生成特定型別的不含元素的
view。2)
empty_view 的變數模板。目錄 |
[編輯] 成員函式
| begin [靜態] |
返回 nullptr (公共靜態成員函式) |
| end [靜態] |
返回 nullptr (公共靜態成員函式) |
| data [靜態] |
返回 nullptr (公共靜態成員函式) |
| size [靜態] |
返回 0 (公共靜態成員函式) |
| empty [靜態] |
返回 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; } |
(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 從 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)); // 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) |
可能包含或不包含物件的包裝器 (類模板) |
一個包含單個指定值的 view(類模板) (定製點物件) | |
| (C++20) |
包含range所有元素的view(別名模板) (範圍介面卡物件) |
| (C++20) |
其他range元素的view(類模板) |