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 (類模板) |