Namespaces
Variants

std::ranges:: borrowed_iterator_t, std::ranges:: borrowed_subrange_t

From cppreference.net
Ranges library
Range adaptors
定義済みヘッダー <ranges>
template < ranges:: range R >
using borrowed_iterator_t = /* 下記参照 */ ;
(1) (C++20以降)
template < ranges:: range R >
using borrowed_subrange_t = /* 下記参照 */ ;
(2) (C++20以降)
1) std :: ranges:: iterator_t < R > R borrowed_range をモデル化する場合は std::ranges::dangling それ以外の場合。
2) std :: ranges:: subrange < std :: ranges:: iterator_t < R >> R borrowed_range をモデル化する場合は std::ranges::dangling それ以外の場合。

これらの2つのエイリアステンプレートは、一部の 制約付きアルゴリズム によって、潜在的にダングリングするイテレータやビューを返すのを避けるために使用されます。

実装例

borrowed_iterator_t
template< std::ranges::range R >
using borrowed_iterator_t = std::conditional_t<std::ranges::borrowed_range<R>,
    std::ranges::iterator_t<R>, std::ranges::dangling>;
borrowed_subrange_t
template< std::ranges::range R >
using borrowed_subrange_t = std::conditional_t<std::ranges::borrowed_range<R>,
    std::ranges::subrange<std::ranges::iterator_t<R>>, std::ranges::dangling>;

関連項目

イテレータまたは subrange がダングリング状態となるため返すべきではないことを示すプレースホルダ型
(クラス)