std::ranges::borrowed_iterator_t, std::ranges::borrowed_subrange_t
From cppreference.com
| ヘッダ <ranges> で定義 |
||
template< ranges::range R > using borrowed_iterator_t = /* 以下参照 */; |
(1) | (C++20以降) |
template< ranges::range R > using borrowed_subrange_t = /* 以下参照 */; |
(2) | (C++20以降) |
2) std::ranges::subrange<std::ranges::iterator_t<R>>。ただし、
R が borrowed_range をモデルとする場合は、それ以外は std::ranges::dangling。これらの2つのエイリアステンプレートは、一部の 制約付きアルゴリズム が、ぶら下がった(dangling)イテレータやビューを返す可能性を回避するために使用されます。
[編集] 実装の可能性
| 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>; |
[編集] 関連項目
| (C++20) |
イテレータや subrange がダングリングになるため返されるべきでないことを示すプレースホルダー型(クラス) |