名稱空間
變體
操作

std::ranges::sized_range, std::ranges::disable_sized_range

來自 cppreference.com
< cpp‎ | ranges
 
 
範圍庫 (Ranges library)
範圍介面卡 (Range adaptors)
 
定義於標頭檔案 <ranges>
template< class T >

concept sized_range = ranges::range<T> &&
    requires(T& t) {
        ranges::size(t);

    };
(1) (C++20 起)
template< class >
constexpr bool disable_sized_range = false;
(2) (C++20 起)
1) sized_range 概念指定了一個 range 型別,該型別使用 size 函式以常數時間知道其大小的要求。
2) disable_sized_range 存在的目的是允許使用提供 size 函式(作為成員或非成員)但實際上不符合 sized_range 模型的範圍型別。使用者可以為 cv-unqualified 的程式定義型別特化 disable_sized_range。此類特化應可在 常量表達式 中使用,並具有型別 const bool

目錄

[edit] 語義要求

1) 給定型別為 std::remove_reference_t<T> 的左值 tT 建模 sized_range 僅當

[edit] 注意

disable_sized_range 不能用於選擇退出其迭代器和哨兵滿足 sized_sentinel_for 的範圍;必須改用 std::disable_sized_sentinel_for

disable_sized_range 不能為陣列型別或引用型別進行特化。

[edit] 示例

#include <forward_list>
#include <list>
#include <ranges>
 
static_assert
(
    std::ranges::sized_range<std::list<int>> and
    not std::ranges::sized_range<std::forward_list<int>>
);
 
int main() {}

[edit] 參閱

指定其迭代器型別滿足 random_access_iterator 的範圍
(概念) [編輯]
指定其迭代器型別滿足 contiguous_iterator 的範圍
(概念) [編輯]