1034 lines
96 KiB
HTML
1034 lines
96 KiB
HTML
<!DOCTYPE html>
|
|
<html lang="zh" dir="ltr" class="client-nojs" xmlns="http://www.w3.org/1999/xhtml" xml:lang="zh">
|
|
<head><meta http-equiv="x-ua-compatible" content="ie=edge">
|
|
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
|
<title>实验性库头文件 <experimental/ranges/iterator></title>
|
|
<link rel="stylesheet" href="ext.css" />
|
|
<link rel="stylesheet" href="site_modules.css" />
|
|
</head>
|
|
<body class="mediawiki ltr sitedir-ltr ns-0 ns-subject page-cpp_header_experimental_ranges_iterator skin-cppreference2 action-view cpp-navbar">
|
|
<div id="cpp-content-base">
|
|
<div id="content"><a id="top"></a>
|
|
<h1 id="firstHeading" class="firstHeading"><span style="font-size:0.7em; line-height:130%">实验性库头文件</span> <experimental/ranges/iterator></h1>
|
|
<div id="bodyContent">
|
|
<div id="contentSub"><span class="subpages">< <a href="cpp.html">cpp</a>‎ | <a href="cpp-header.html">header</a>‎ | <a href="cpp-header-experimental.html">experimental</a></span></div>
|
|
<div id="mw-content-text" lang="zh" dir="ltr" class="mw-content-ltr" xml:lang="zh">
|
|
<p>此头文件是<a href="cpp-experimental-ranges.html">范围</a>库的一部分。</p>
|
|
<h3><span class="mw-headline" id=".E8.BF.AD.E4.BB.A3.E5.99.A8.E7.9B.B8.E5.85.B3.E6.A6.82.E5.BF.B5">迭代器相关概念</span></h3>
|
|
<table class="t-dsc-begin">
|
|
<tr class="t-dsc-header">
|
|
<td colspan="2">
|
|
<div>定义于命名空间 <code>std::experimental::ranges</code></div>
|
|
</td>
|
|
</tr>
|
|
</table>
|
|
<h4><span class="mw-headline" id=".E8.BF.AD.E4.BB.A3.E5.99.A8.E6.A6.82.E5.BF.B5">迭代器概念</span></h4>
|
|
<table class="t-dsc-begin">
|
|
<tr class="t-dsc">
|
|
<td>
|
|
<div class="t-dsc-member-div">
|
|
<div><a href="cpp-experimental-ranges-iterator-Readable.html"><span class="t-lines"><span>Readable</span></span></a></div>
|
|
</div>
|
|
</td>
|
|
<td>指定类型通过应用运算符 <code>*</code> 可读<br />
|
|
<span class="t-mark">(概念)</span></td>
|
|
</tr>
|
|
<tr class="t-dsc">
|
|
<td>
|
|
<div class="t-dsc-member-div">
|
|
<div><a href="cpp-experimental-ranges-iterator-Writable.html"><span class="t-lines"><span>Writable</span></span></a></div>
|
|
</div>
|
|
</td>
|
|
<td>指定可向迭代器所引用的对象写入值<br />
|
|
<span class="t-mark">(概念)</span></td>
|
|
</tr>
|
|
<tr class="t-dsc">
|
|
<td>
|
|
<div class="t-dsc-member-div">
|
|
<div><a href="cpp-experimental-ranges-iterator-WeaklyIncrementable.html"><span class="t-lines"><span>WeaklyIncrementable</span></span></a></div>
|
|
</div>
|
|
</td>
|
|
<td>指定 <a href="cpp-experimental-ranges-concepts-Semiregular.html"><code>Semiregular</code></a> 类型能以前后自增运算符自增<br />
|
|
<span class="t-mark">(概念)</span></td>
|
|
</tr>
|
|
<tr class="t-dsc">
|
|
<td>
|
|
<div class="t-dsc-member-div">
|
|
<div><a href="cpp-experimental-ranges-iterator-Incrementable.html"><span class="t-lines"><span>Incrementable</span></span></a></div>
|
|
</div>
|
|
</td>
|
|
<td>指定 <a href="cpp-experimental-ranges-iterator-WeaklyIncrementable.html"><code>WeaklyIncrementable</code></a> 类型上的自增操作保持相等性,而且该类型 <a href="cpp-experimental-ranges-concepts-EqualityComparable.html"><code>EqualityComparable</code></a><br />
|
|
<span class="t-mark">(概念)</span></td>
|
|
</tr>
|
|
<tr class="t-dsc">
|
|
<td>
|
|
<div class="t-dsc-member-div">
|
|
<div><a href="cpp-experimental-ranges-iterator-Iterator.html"><span class="t-lines"><span>Iterator</span></span></a></div>
|
|
</div>
|
|
</td>
|
|
<td>指定该类型对象能自增并解引用<br />
|
|
<span class="t-mark">(概念)</span></td>
|
|
</tr>
|
|
<tr class="t-dsc">
|
|
<td>
|
|
<div class="t-dsc-member-div">
|
|
<div><a href="cpp-experimental-ranges-iterator-Sentinel.html"><span class="t-lines"><span>Sentinel</span></span></a></div>
|
|
</div>
|
|
</td>
|
|
<td>指定类型的对象是 <a href="cpp-experimental-ranges-iterator-Iterator.html"><code>Iterator</code></a> 类型的哨位<br />
|
|
<span class="t-mark">(概念)</span></td>
|
|
</tr>
|
|
<tr class="t-dsc">
|
|
<td>
|
|
<div class="t-dsc-member-div">
|
|
<div><a href="cpp-experimental-ranges-iterator-SizedSentinel.html"><span class="t-lines"><span>SizedSentinel</span></span></a></div>
|
|
</div>
|
|
</td>
|
|
<td>指定能应用 <code>-</code> 运算符到迭代器和哨位,以在常数时间计算其差<br />
|
|
<span class="t-mark">(概念)</span></td>
|
|
</tr>
|
|
<tr class="t-dsc">
|
|
<td>
|
|
<div class="t-dsc-member-div">
|
|
<div><a href="cpp-experimental-ranges-iterator-InputIterator.html"><span class="t-lines"><span>InputIterator</span></span></a></div>
|
|
</div>
|
|
</td>
|
|
<td>指定类型为输入迭代器,即能读其所引用值,且它能前后自增<br />
|
|
<span class="t-mark">(概念)</span></td>
|
|
</tr>
|
|
<tr class="t-dsc">
|
|
<td>
|
|
<div class="t-dsc-member-div">
|
|
<div><a href="cpp-experimental-ranges-iterator-OutputIterator.html"><span class="t-lines"><span>OutputIterator</span></span></a></div>
|
|
</div>
|
|
</td>
|
|
<td>指定类型为给定值类型的输出迭代器,即能把该类型的值写入它,且它能前后自增<br />
|
|
<span class="t-mark">(概念)</span></td>
|
|
</tr>
|
|
<tr class="t-dsc">
|
|
<td>
|
|
<div class="t-dsc-member-div">
|
|
<div><a href="cpp-experimental-ranges-iterator-ForwardIterator.html"><span class="t-lines"><span>ForwardIterator</span></span></a></div>
|
|
</div>
|
|
</td>
|
|
<td>指定 <a href="cpp-experimental-ranges-iterator-InputIterator.html"><code>InputIterator</code></a> 为向前迭代器,支持相等比较和多趟<br />
|
|
<span class="t-mark">(概念)</span></td>
|
|
</tr>
|
|
<tr class="t-dsc">
|
|
<td>
|
|
<div class="t-dsc-member-div">
|
|
<div><a href="cpp-experimental-ranges-iterator-BidirectionalIterator.html"><span class="t-lines"><span>BidirectionalIterator</span></span></a></div>
|
|
</div>
|
|
</td>
|
|
<td>指定 <a href="cpp-experimental-ranges-iterator-ForwardIterator.html"><code>ForwardIterator</code></a> 为双向迭代器,支持向后移动<br />
|
|
<span class="t-mark">(概念)</span></td>
|
|
</tr>
|
|
<tr class="t-dsc">
|
|
<td>
|
|
<div class="t-dsc-member-div">
|
|
<div><a href="cpp-experimental-ranges-iterator-RandomAccessIterator.html"><span class="t-lines"><span>RandomAccessIterator</span></span></a></div>
|
|
</div>
|
|
</td>
|
|
<td>指定 <a href="cpp-experimental-ranges-iterator-BidirectionalIterator.html"><code>BidirectionalIterator</code></a> 为随机访问迭代器,支持常数时间前进和下标访问<br />
|
|
<span class="t-mark">(概念)</span></td>
|
|
</tr>
|
|
</table>
|
|
<h4><span class="mw-headline" id=".E9.97.B4.E6.8E.A5.E5.8F.AF.E8.B0.83.E7.94.A8.E6.A6.82.E5.BF.B5">间接可调用概念</span></h4>
|
|
<table class="t-dsc-begin">
|
|
<tr class="t-dsc">
|
|
<td>
|
|
<div class="t-dsc-member-div">
|
|
<div><a href="cpp-experimental-ranges-iterator-IndirectUnaryInvocable.html"><span class="t-lines"><span>IndirectUnaryInvocable</span><span>IndirectRegularUnaryInvocable</span></span></a></div>
|
|
</div>
|
|
</td>
|
|
<td>指定可调用对象能以解引用一个 <a href="cpp-experimental-ranges-iterator-Readable.html"><code>Readable</code></a> 类型的结果调用<br />
|
|
<span class="t-mark">(概念)</span></td>
|
|
</tr>
|
|
<tr class="t-dsc">
|
|
<td>
|
|
<div class="t-dsc-member-div">
|
|
<div><a href="cpp-experimental-ranges-iterator-IndirectUnaryPredicate.html"><span class="t-lines"><span>IndirectUnaryPredicate</span></span></a></div>
|
|
</div>
|
|
</td>
|
|
<td>指定可调用对象,以解引用某个 <a href="cpp-experimental-ranges-iterator-Readable.html"><code>Readable</code></a> 类型的结果调用时,满足 <a href="cpp-experimental-ranges-concepts-Predicate.html"><code>Predicate</code></a><br />
|
|
<span class="t-mark">(概念)</span></td>
|
|
</tr>
|
|
<tr class="t-dsc">
|
|
<td>
|
|
<div class="t-dsc-member-div">
|
|
<div><a href="cpp-experimental-ranges-iterator-IndirectRelation.html"><span class="t-lines"><span>IndirectRelation</span></span></a></div>
|
|
</div>
|
|
</td>
|
|
<td>指定可调用对象以解引用某些 <a href="cpp-experimental-ranges-iterator-Readable.html"><code>Readable</code></a> 类型的结果调用时,满足 <a href="cpp-experimental-ranges-concepts-Relation.html"><code>Relation</code></a><br />
|
|
<span class="t-mark">(概念)</span></td>
|
|
</tr>
|
|
<tr class="t-dsc">
|
|
<td>
|
|
<div class="t-dsc-member-div">
|
|
<div><a href="cpp-experimental-ranges-iterator-IndirectStrictWeakOrder.html"><span class="t-lines"><span>IndirectStrictWeakOrder</span></span></a></div>
|
|
</div>
|
|
</td>
|
|
<td>指定可调用对象,以解引用某些 <a href="cpp-experimental-ranges-iterator-Readable.html"><code>Readable</code></a> 类型的结果调用时,满足 <a href="cpp-experimental-ranges-concepts-StrictWeakOrder.html"><code>StrictWeakOrder</code></a><br />
|
|
<span class="t-mark">(概念)</span></td>
|
|
</tr>
|
|
</table>
|
|
<h4><span class="mw-headline" id=".E5.B8.B8.E7.94.A8.E7.AE.97.E6.B3.95.E8.A6.81.E6.B1.82">常用算法要求</span></h4>
|
|
<table class="t-dsc-begin">
|
|
<tr class="t-dsc">
|
|
<td>
|
|
<div class="t-dsc-member-div">
|
|
<div><a href="cpp-experimental-ranges-iterator-IndirectlyMovable.html"><span class="t-lines"><span>IndirectlyMovable</span></span></a></div>
|
|
</div>
|
|
</td>
|
|
<td>指定值可从 <a href="cpp-experimental-ranges-iterator-Readable.html"><code>Readable</code></a> 类型移动到 <a href="cpp-experimental-ranges-iterator-Writable.html"><code>Writable</code></a> 类型<br />
|
|
<span class="t-mark">(概念)</span></td>
|
|
</tr>
|
|
<tr class="t-dsc">
|
|
<td>
|
|
<div class="t-dsc-member-div">
|
|
<div><a href="cpp-experimental-ranges-iterator-IndirectlyMovableStorable.html"><span class="t-lines"><span>IndirectlyMovableStorable</span></span></a></div>
|
|
</div>
|
|
</td>
|
|
<td>指定类型可从 <a href="cpp-experimental-ranges-iterator-Readable.html"><code>Readable</code></a> 类型移动到 <a href="cpp-experimental-ranges-iterator-Writable.html"><code>Writable</code></a> 类型,且移动可以通过中间对象进行<br />
|
|
<span class="t-mark">(概念)</span></td>
|
|
</tr>
|
|
<tr class="t-dsc">
|
|
<td>
|
|
<div class="t-dsc-member-div">
|
|
<div><a href="cpp-experimental-ranges-iterator-IndirectlyCopyable.html"><span class="t-lines"><span>IndirectlyCopyable</span></span></a></div>
|
|
</div>
|
|
</td>
|
|
<td>指定值可从 <a href="cpp-experimental-ranges-iterator-Readable.html"><code>Readable</code></a> 类型复制到 <a href="cpp-experimental-ranges-iterator-Writable.html"><code>Writable</code></a> 类型<br />
|
|
<span class="t-mark">(概念)</span></td>
|
|
</tr>
|
|
<tr class="t-dsc">
|
|
<td>
|
|
<div class="t-dsc-member-div">
|
|
<div><a href="cpp-experimental-ranges-iterator-IndirectlyCopyableStorable.html"><span class="t-lines"><span>IndirectlyCopyableStorable</span></span></a></div>
|
|
</div>
|
|
</td>
|
|
<td>指定值可从 <a href="cpp-experimental-ranges-iterator-Readable.html"><code>Readable</code></a> 类型复制到 <a href="cpp-experimental-ranges-iterator-Writable.html"><code>Writable</code></a> 类型,且该复制可能通过中间对象进行<br />
|
|
<span class="t-mark">(概念)</span></td>
|
|
</tr>
|
|
<tr class="t-dsc">
|
|
<td>
|
|
<div class="t-dsc-member-div">
|
|
<div><a href="cpp-experimental-ranges-iterator-IndirectlySwappable.html"><span class="t-lines"><span>IndirectlySwappable</span></span></a></div>
|
|
</div>
|
|
</td>
|
|
<td>指定两个 <a href="cpp-experimental-ranges-iterator-Readable.html"><code>Readable</code></a> 类型所引用的值可交换<br />
|
|
<span class="t-mark">(概念)</span></td>
|
|
</tr>
|
|
<tr class="t-dsc">
|
|
<td>
|
|
<div class="t-dsc-member-div">
|
|
<div><a href="cpp-experimental-ranges-iterator-IndirectlyComparable.html"><span class="t-lines"><span>IndirectlyComparable</span></span></a></div>
|
|
</div>
|
|
</td>
|
|
<td>指定两个 <a href="cpp-experimental-ranges-iterator-Readable.html"><code>Readable</code></a> 类型所引用的值能比较<br />
|
|
<span class="t-mark">(概念)</span></td>
|
|
</tr>
|
|
<tr class="t-dsc">
|
|
<td>
|
|
<div class="t-dsc-member-div">
|
|
<div><a href="cpp-experimental-ranges-iterator-Permutable.html"><span class="t-lines"><span>Permutable</span></span></a></div>
|
|
</div>
|
|
</td>
|
|
<td>指定原位重排元素的算法的公共要求<br />
|
|
<span class="t-mark">(概念)</span></td>
|
|
</tr>
|
|
<tr class="t-dsc">
|
|
<td>
|
|
<div class="t-dsc-member-div">
|
|
<div><a href="cpp-experimental-ranges-iterator-Mergeable.html"><span class="t-lines"><span>Mergeable</span></span></a></div>
|
|
</div>
|
|
</td>
|
|
<td>指定算法的要求,该算法需要通过复制元素归并已排序序列到输出序列<br />
|
|
<span class="t-mark">(概念)</span></td>
|
|
</tr>
|
|
<tr class="t-dsc">
|
|
<td>
|
|
<div class="t-dsc-member-div">
|
|
<div><a href="cpp-experimental-ranges-iterator-Sortable.html"><span class="t-lines"><span>Sortable</span></span></a></div>
|
|
</div>
|
|
</td>
|
|
<td>指定重排元素为有序序列的算法的公共要求<br />
|
|
<span class="t-mark">(概念)</span></td>
|
|
</tr>
|
|
</table>
|
|
<h4><span class="mw-headline" id=".E6.A6.82.E5.BF.B5.E5.B7.A5.E5.85.B7">概念工具</span></h4>
|
|
<table class="t-dsc-begin">
|
|
<tr class="t-dsc">
|
|
<td>
|
|
<div class="t-dsc-member-div">
|
|
<div><a href="cpp-experimental-ranges-iterator-indirect_result_of.html"><span class="t-lines"><span>indirect_result_of</span></span></a></div>
|
|
</div>
|
|
</td>
|
|
<td>计算在某 <a href="cpp-experimental-ranges-iterator-Readable.html"><code>Readable</code></a> 类型集合的解引用结果上调用可调用对象的结果<br />
|
|
<span class="t-mark">(类模板)</span></td>
|
|
</tr>
|
|
<tr class="t-dsc">
|
|
<td>
|
|
<div class="t-dsc-member-div">
|
|
<div><a href="cpp-experimental-ranges-iterator-projected.html"><span class="t-lines"><span>projected</span></span></a></div>
|
|
</div>
|
|
</td>
|
|
<td>用于指定接受投影的算法上的制约的帮助模板<br />
|
|
<span class="t-mark">(类模板)</span></td>
|
|
</tr>
|
|
</table>
|
|
<h3><span class="mw-headline" id=".E8.BF.AD.E4.BB.A3.E5.99.A8.E5.8E.9F.E8.AF.AD">迭代器原语</span></h3>
|
|
<h4><span class="mw-headline" id=".E8.BF.AD.E4.BB.A3.E5.99.A8.E5.B7.A5.E5.85.B7">迭代器工具</span></h4>
|
|
<table class="t-dsc-begin">
|
|
<tr class="t-dsc-header">
|
|
<td colspan="2">
|
|
<div>定义于命名空间 <code>std::experimental::ranges</code></div>
|
|
</td>
|
|
</tr>
|
|
<tr class="t-dsc">
|
|
<td>
|
|
<div class="t-dsc-member-div">
|
|
<div><a href="https://zh.cppreference.com/mwiki/index.php?title=cpp/experimental/ranges/iterator/iter_move&action=edit&redlink=1" class="new" title="cpp/experimental/ranges/iterator/iter move(页面不存在)"><span class="t-lines"><span>iter_move</span></span></a></div>
|
|
</div>
|
|
</td>
|
|
<td>转型解引用对象的结果为其所关联的右值引用类型<br />
|
|
<span class="t-mark">(定制点对象)</span></td>
|
|
</tr>
|
|
<tr class="t-dsc">
|
|
<td>
|
|
<div class="t-dsc-member-div">
|
|
<div><a href="https://zh.cppreference.com/mwiki/index.php?title=cpp/experimental/ranges/iterator/iter_swap&action=edit&redlink=1" class="new" title="cpp/experimental/ranges/iterator/iter swap(页面不存在)"><span class="t-lines"><span>iter_swap</span></span></a></div>
|
|
</div>
|
|
</td>
|
|
<td>交换两个可解引用对象所引用的值<br />
|
|
<span class="t-mark">(定制点对象)</span></td>
|
|
</tr>
|
|
</table>
|
|
<h4><span class="mw-headline" id=".E8.BF.AD.E4.BB.A3.E5.99.A8.E7.89.B9.E5.BE.81">迭代器特征</span></h4>
|
|
<table class="t-dsc-begin">
|
|
<tr class="t-dsc-header">
|
|
<td colspan="2">
|
|
<div>定义于命名空间 <code>std::experimental::ranges</code></div>
|
|
</td>
|
|
</tr>
|
|
<tr class="t-dsc">
|
|
<td>
|
|
<div class="t-dsc-member-div">
|
|
<div><a href="cpp-experimental-ranges-iterator-difference_type.html"><span class="t-lines"><span>difference_type</span></span></a></div>
|
|
</div>
|
|
</td>
|
|
<td>获得 <a href="cpp-experimental-ranges-iterator-WeaklyIncrementable.html"><code>WeaklyIncrementable</code></a> 类型的差类型<br />
|
|
<span class="t-mark">(类模板)</span></td>
|
|
</tr>
|
|
<tr class="t-dsc">
|
|
<td>
|
|
<div class="t-dsc-member-div">
|
|
<div><a href="cpp-experimental-ranges-iterator-value_type.html"><span class="t-lines"><span>value_type</span></span></a></div>
|
|
</div>
|
|
</td>
|
|
<td>获得 <a href="cpp-experimental-ranges-iterator-Readable.html"><code>Readable</code></a> 类型的值类型<br />
|
|
<span class="t-mark">(类模板)</span></td>
|
|
</tr>
|
|
<tr class="t-dsc">
|
|
<td>
|
|
<div class="t-dsc-member-div">
|
|
<div><a href="cpp-experimental-ranges-iterator-iterator_category.html"><span class="t-lines"><span>iterator_category</span></span></a></div>
|
|
</div>
|
|
</td>
|
|
<td>获得输入迭代器类型的迭代器类别<br />
|
|
<span class="t-mark">(类模板)</span></td>
|
|
</tr>
|
|
<tr class="t-dsc">
|
|
<td>
|
|
<div class="t-dsc-member-div">
|
|
<div><a href="https://zh.cppreference.com/mwiki/index.php?title=cpp/experimental/ranges/iterator/iterator_traits&action=edit&redlink=1" class="new" title="cpp/experimental/ranges/iterator/iterator traits(页面不存在)"><span class="t-lines"><span>iterator_traits</span></span></a></div>
|
|
</div>
|
|
</td>
|
|
<td>汇集迭代器的关联类型的兼容性特性类<br />
|
|
<span class="t-mark">(别名模板)</span></td>
|
|
</tr>
|
|
<tr class="t-dsc">
|
|
<td>
|
|
<div class="t-dsc-member-div">
|
|
<div><a href="cpp-experimental-ranges-iterator-reference_t.html"><span class="t-lines"><span>reference_t</span><span>rvalue_reference_t</span><span>iter_common_reference_t</span></span></a></div>
|
|
</div>
|
|
</td>
|
|
<td>获得可解引用对象的关联引用类型<br />
|
|
<span class="t-mark">(别名模板)</span></td>
|
|
</tr>
|
|
</table>
|
|
<h4><span class="mw-headline" id=".E8.BF.AD.E4.BB.A3.E5.99.A8.E7.B1.BB.E5.88.AB.E6.A0.87.E7.AD.BE">迭代器类别标签</span></h4>
|
|
<table class="t-dsc-begin">
|
|
<tr class="t-dsc-header">
|
|
<td colspan="2">
|
|
<div>定义于命名空间 <code>std::experimental::ranges</code></div>
|
|
</td>
|
|
</tr>
|
|
<tr class="t-dsc">
|
|
<td>
|
|
<div class="t-dsc-member-div">
|
|
<div><a href="cpp-experimental-ranges-iterator-iterator_tags.html"><span class="t-lines"><span>input_iterator_tag</span><span>output_iterator_tag</span><span>forward_iterator_tag</span><span>bidirectional_iterator_tag</span><span>random_access_iterator_tag</span></span></a></div>
|
|
</div>
|
|
</td>
|
|
<td>用于指示迭代器类别的空类<br />
|
|
<span class="t-mark">(类)</span></td>
|
|
</tr>
|
|
</table>
|
|
<h4><span class="mw-headline" id="std::iterator_traits_.E7.9A.84.E7.89.B9.E5.8C.96"><span class="t-lc"><a href="cpp-iterator-iterator_traits.html">std::iterator_traits</a></span> 的特化</span></h4>
|
|
<table class="t-dsc-begin">
|
|
<tr class="t-dsc-header">
|
|
<td colspan="2">
|
|
<div>定义于命名空间 <code>std</code></div>
|
|
</td>
|
|
</tr>
|
|
<tr class="t-dsc">
|
|
<td>
|
|
<div class="t-dsc-member-div">
|
|
<div><a href="https://zh.cppreference.com/mwiki/index.php?title=cpp/experimental/ranges/iterator/std_iter_traits&action=edit&redlink=1" class="new" title="cpp/experimental/ranges/iterator/std iter traits(页面不存在)"><span class="t-lines"><span>std::iterator_traits<span style="font-size:0.7em; line-height:130%"><InputIterator></span></span><span>std::iterator_traits<span style="font-size:0.7em; line-height:130%"><OutputIterator></span></span></span></a></div>
|
|
</div>
|
|
</td>
|
|
<td>为范围 TS 迭代器特化 <span class="t-lc"><a href="cpp-iterator-iterator_traits.html">std::iterator_traits</a></span><br />
|
|
<span class="t-mark">(类模板特化)</span></td>
|
|
</tr>
|
|
</table>
|
|
<h4><span class="mw-headline" id=".E8.BF.AD.E4.BB.A3.E5.99.A8.E6.93.8D.E4.BD.9C">迭代器操作</span></h4>
|
|
<table class="t-dsc-begin">
|
|
<tr class="t-dsc-header">
|
|
<td colspan="2">
|
|
<div>定义于命名空间 <code>std::experimental::ranges</code></div>
|
|
</td>
|
|
</tr>
|
|
<tr class="t-dsc">
|
|
<td>
|
|
<div class="t-dsc-member-div">
|
|
<div><a href="cpp-experimental-ranges-iterator-advance.html"><span class="t-lines"><span>advance</span></span></a></div>
|
|
</div>
|
|
</td>
|
|
<td>令迭代器前进给定的距离<br />
|
|
<span class="t-mark">(函数模板)</span></td>
|
|
</tr>
|
|
<tr class="t-dsc">
|
|
<td>
|
|
<div class="t-dsc-member-div">
|
|
<div><a href="cpp-experimental-ranges-iterator-distance.html"><span class="t-lines"><span>distance</span></span></a></div>
|
|
</div>
|
|
</td>
|
|
<td>返回迭代器和哨位之间的距离,或范围起始和结尾间的距离<br />
|
|
<span class="t-mark">(函数模板)</span></td>
|
|
</tr>
|
|
<tr class="t-dsc">
|
|
<td>
|
|
<div class="t-dsc-member-div">
|
|
<div><a href="cpp-experimental-ranges-iterator-next.html"><span class="t-lines"><span>next</span></span></a></div>
|
|
</div>
|
|
</td>
|
|
<td>自增迭代器<br />
|
|
<span class="t-mark">(函数模板)</span></td>
|
|
</tr>
|
|
<tr class="t-dsc">
|
|
<td>
|
|
<div class="t-dsc-member-div">
|
|
<div><a href="cpp-experimental-ranges-iterator-prev.html"><span class="t-lines"><span>prev</span></span></a></div>
|
|
</div>
|
|
</td>
|
|
<td>自减迭代器<br />
|
|
<span class="t-mark">(函数模板)</span></td>
|
|
</tr>
|
|
</table>
|
|
<h3><span class="mw-headline" id=".E8.BF.AD.E4.BB.A3.E5.99.A8.E9.80.82.E9.85.8D.E5.99.A8">迭代器适配器</span></h3>
|
|
<table class="t-dsc-begin">
|
|
<tr class="t-dsc-header">
|
|
<td colspan="2">
|
|
<div>定义于命名空间 <code>std::experimental::ranges</code></div>
|
|
</td>
|
|
</tr>
|
|
<tr class="t-dsc">
|
|
<td>
|
|
<div class="t-dsc-member-div">
|
|
<div><a href="https://zh.cppreference.com/mwiki/index.php?title=cpp/experimental/ranges/iterator/reverse_iterator&action=edit&redlink=1" class="new" title="cpp/experimental/ranges/iterator/reverse iterator(页面不存在)"><span class="t-lines"><span>reverse_iterator</span></span></a></div>
|
|
</div>
|
|
</td>
|
|
<td>用于逆序遍历的迭代器适配器<br />
|
|
<span class="t-mark">(类模板)</span></td>
|
|
</tr>
|
|
<tr class="t-dsc">
|
|
<td>
|
|
<div class="t-dsc-member-div">
|
|
<div><a href="https://zh.cppreference.com/mwiki/index.php?title=cpp/experimental/ranges/iterator/back_insert_iterator&action=edit&redlink=1" class="new" title="cpp/experimental/ranges/iterator/back insert iterator(页面不存在)"><span class="t-lines"><span>back_insert_iterator</span></span></a></div>
|
|
</div>
|
|
</td>
|
|
<td>用于在容器尾插入的迭代器适配器<br />
|
|
<span class="t-mark">(类模板)</span></td>
|
|
</tr>
|
|
<tr class="t-dsc">
|
|
<td>
|
|
<div class="t-dsc-member-div">
|
|
<div><a href="https://zh.cppreference.com/mwiki/index.php?title=cpp/experimental/ranges/iterator/front_insert_iterator&action=edit&redlink=1" class="new" title="cpp/experimental/ranges/iterator/front insert iterator(页面不存在)"><span class="t-lines"><span>front_insert_iterator</span></span></a></div>
|
|
</div>
|
|
</td>
|
|
<td>用于在容器首插入的迭代器适配器<br />
|
|
<span class="t-mark">(类模板)</span></td>
|
|
</tr>
|
|
<tr class="t-dsc">
|
|
<td>
|
|
<div class="t-dsc-member-div">
|
|
<div><a href="https://zh.cppreference.com/mwiki/index.php?title=cpp/experimental/ranges/iterator/insert_iterator&action=edit&redlink=1" class="new" title="cpp/experimental/ranges/iterator/insert iterator(页面不存在)"><span class="t-lines"><span>insert_iterator</span></span></a></div>
|
|
</div>
|
|
</td>
|
|
<td>用于插入元素到容器中的迭代器适配器<br />
|
|
<span class="t-mark">(类模板)</span></td>
|
|
</tr>
|
|
<tr class="t-dsc">
|
|
<td>
|
|
<div class="t-dsc-member-div">
|
|
<div><a href="https://zh.cppreference.com/mwiki/index.php?title=cpp/experimental/ranges/iterator/move_iterator&action=edit&redlink=1" class="new" title="cpp/experimental/ranges/iterator/move iterator(页面不存在)"><span class="t-lines"><span>move_iterator</span></span></a></div>
|
|
</div>
|
|
</td>
|
|
<td>解引用为右值引用的迭代器适配器<br />
|
|
<span class="t-mark">(类模板)</span></td>
|
|
</tr>
|
|
<tr class="t-dsc">
|
|
<td>
|
|
<div class="t-dsc-member-div">
|
|
<div><a href="https://zh.cppreference.com/mwiki/index.php?title=cpp/experimental/ranges/iterator/move_sentinel&action=edit&redlink=1" class="new" title="cpp/experimental/ranges/iterator/move sentinel(页面不存在)"><span class="t-lines"><span>move_sentinel</span></span></a></div>
|
|
</div>
|
|
</td>
|
|
<td>为 <code>move_iterator</code> 所用的哨位适配器<br />
|
|
<span class="t-mark">(类模板)</span></td>
|
|
</tr>
|
|
<tr class="t-dsc">
|
|
<td>
|
|
<div class="t-dsc-member-div">
|
|
<div><a href="https://zh.cppreference.com/mwiki/index.php?title=cpp/experimental/ranges/iterator/common_iterator&action=edit&redlink=1" class="new" title="cpp/experimental/ranges/iterator/common iterator(页面不存在)"><span class="t-lines"><span>common_iterator</span></span></a></div>
|
|
</div>
|
|
</td>
|
|
<td>将迭代器-哨位对适配成公共迭代器类型,以用于遗留算法<br />
|
|
<span class="t-mark">(类模板)</span></td>
|
|
</tr>
|
|
<tr class="t-dsc">
|
|
<td>
|
|
<div class="t-dsc-member-div">
|
|
<div><a href="https://zh.cppreference.com/mwiki/index.php?title=cpp/experimental/ranges/iterator/counted_iterator&action=edit&redlink=1" class="new" title="cpp/experimental/ranges/iterator/counted iterator(页面不存在)"><span class="t-lines"><span>counted_iterator</span></span></a></div>
|
|
</div>
|
|
</td>
|
|
<td>保持距起始位置距离踪迹的迭代器适配器<br />
|
|
<span class="t-mark">(类模板)</span></td>
|
|
</tr>
|
|
<tr class="t-dsc">
|
|
<td>
|
|
<div class="t-dsc-member-div">
|
|
<div><a href="https://zh.cppreference.com/mwiki/index.php?title=cpp/experimental/ranges/iterator/default_sentinel&action=edit&redlink=1" class="new" title="cpp/experimental/ranges/iterator/default sentinel(页面不存在)"><span class="t-lines"><span>default_sentinel</span></span></a></div>
|
|
</div>
|
|
</td>
|
|
<td>知晓其范围的迭代器类型所用的空哨位类型<br />
|
|
<span class="t-mark">(类)</span></td>
|
|
</tr>
|
|
<tr class="t-dsc">
|
|
<td>
|
|
<div class="t-dsc-member-div">
|
|
<div><a href="cpp-experimental-ranges-iterator-dangling.html"><span class="t-lines"><span>dangling</span></span></a></div>
|
|
</div>
|
|
</td>
|
|
<td>可能悬垂的迭代器的包装器<br />
|
|
<span class="t-mark">(类模板)</span></td>
|
|
</tr>
|
|
<tr class="t-dsc">
|
|
<td>
|
|
<div class="t-dsc-member-div">
|
|
<div><a href="cpp-experimental-ranges-iterator-dangling.html"><span class="t-lines"><span>safe_iterator_t</span></span></a></div>
|
|
</div>
|
|
</td>
|
|
<td>以 <code>dangling</code> 包装右值范围的迭代器类型的别名模版<br />
|
|
<span class="t-mark">(别名模板)</span></td>
|
|
</tr>
|
|
<tr class="t-dsc">
|
|
<td>
|
|
<div class="t-dsc-member-div">
|
|
<div><a href="https://zh.cppreference.com/mwiki/index.php?title=cpp/experimental/ranges/iterator/unreachable&action=edit&redlink=1" class="new" title="cpp/experimental/ranges/iterator/unreachable(页面不存在)"><span class="t-lines"><span>unreachable</span></span></a></div>
|
|
</div>
|
|
</td>
|
|
<td>用于与任何迭代器一同指示无限范围的哨位类型<br />
|
|
<span class="t-mark">(类)</span></td>
|
|
</tr>
|
|
</table>
|
|
<h3><span class="mw-headline" id=".E6.B5.81.E8.BF.AD.E4.BB.A3.E5.99.A8">流迭代器</span></h3>
|
|
<table class="t-dsc-begin">
|
|
<tr class="t-dsc-header">
|
|
<td colspan="2">
|
|
<div>定义于命名空间 <code>std::experimental::ranges</code></div>
|
|
</td>
|
|
</tr>
|
|
<tr class="t-dsc">
|
|
<td>
|
|
<div class="t-dsc-member-div">
|
|
<div><a href="https://zh.cppreference.com/mwiki/index.php?title=cpp/experimental/ranges/iterator/istream_iterator&action=edit&redlink=1" class="new" title="cpp/experimental/ranges/iterator/istream iterator(页面不存在)"><span class="t-lines"><span>istream_iterator</span></span></a></div>
|
|
</div>
|
|
</td>
|
|
<td>从 <span class="t-lc"><a href="cpp-io-basic_istream.html">std::basic_istream</a></span> 读取的输入迭代器<br />
|
|
<span class="t-mark">(类模板)</span></td>
|
|
</tr>
|
|
<tr class="t-dsc">
|
|
<td>
|
|
<div class="t-dsc-member-div">
|
|
<div><a href="https://zh.cppreference.com/mwiki/index.php?title=cpp/experimental/ranges/iterator/ostream_iterator&action=edit&redlink=1" class="new" title="cpp/experimental/ranges/iterator/ostream iterator(页面不存在)"><span class="t-lines"><span>ostream_iterator</span></span></a></div>
|
|
</div>
|
|
</td>
|
|
<td>写入 <span class="t-lc"><a href="cpp-io-basic_ostream.html">std::basic_ostream</a></span> 的输出迭代器<br />
|
|
<span class="t-mark">(类模板)</span></td>
|
|
</tr>
|
|
<tr class="t-dsc">
|
|
<td>
|
|
<div class="t-dsc-member-div">
|
|
<div><a href="https://zh.cppreference.com/mwiki/index.php?title=cpp/experimental/ranges/iterator/istreambuf_iterator&action=edit&redlink=1" class="new" title="cpp/experimental/ranges/iterator/istreambuf iterator(页面不存在)"><span class="t-lines"><span>istreambuf_iterator</span></span></a></div>
|
|
</div>
|
|
</td>
|
|
<td>从 <span class="t-lc"><a href="cpp-io-basic_streambuf.html">std::basic_streambuf</a></span> 读取的输入迭代器<br />
|
|
<span class="t-mark">(类模板)</span></td>
|
|
</tr>
|
|
<tr class="t-dsc">
|
|
<td>
|
|
<div class="t-dsc-member-div">
|
|
<div><a href="https://zh.cppreference.com/mwiki/index.php?title=cpp/experimental/ranges/iterator/ostreambuf_iterator&action=edit&redlink=1" class="new" title="cpp/experimental/ranges/iterator/ostreambuf iterator(页面不存在)"><span class="t-lines"><span>ostreambuf_iterator</span></span></a></div>
|
|
</div>
|
|
</td>
|
|
<td>写入 <span class="t-lc"><a href="cpp-io-basic_streambuf.html">std::basic_streambuf</a></span> 的输出迭代器<br />
|
|
<span class="t-mark">(类模板)</span></td>
|
|
</tr>
|
|
</table>
|
|
<h3><span class="mw-headline" id=".E6.A6.82.E8.A6.81">概要</span></h3>
|
|
<div dir="ltr" class="mw-geshi" style="text-align: left;">
|
|
<div class="cpp source-cpp">
|
|
<pre class="de1"><span class="kw1">namespace</span> std <span class="br0">{</span> <span class="kw1">namespace</span> experimental <span class="br0">{</span> <span class="kw1">namespace</span> ranges <span class="br0">{</span> <span class="kw1">inline</span> <span class="kw1">namespace</span> v1 <span class="br0">{</span>
|
|
|
|
<span class="kw1">template</span> <span class="sy1"><</span><span class="kw1">class</span> T<span class="sy1">></span> concept <span class="kw4">bool</span> <span class="coMULTI">/* dereferenceable */</span> <span class="co1">// 仅用于阐释</span>
|
|
<span class="sy1">=</span> requires<span class="br0">(</span>T<span class="sy3">&</span> t<span class="br0">)</span> <span class="br0">{</span> <span class="br0">{</span><span class="sy2">*</span>t<span class="br0">}</span> <span class="sy2">-</span><span class="sy1">></span> <span class="kw4">auto</span><span class="sy3">&&</span><span class="sy4">;</span> <span class="br0">}</span><span class="sy4">;</span>
|
|
|
|
<span class="kw1">namespace</span> <span class="br0">{</span>
|
|
<span class="kw4">constexpr</span> <span class="coMULTI">/* 未指明 */</span> iter_move <span class="sy1">=</span> <span class="coMULTI">/* 未指明 */</span><span class="sy4">;</span>
|
|
<span class="kw4">constexpr</span> <span class="coMULTI">/* 未指明 */</span> iter_swap <span class="sy1">=</span> <span class="coMULTI">/* 未指明 */</span><span class="sy4">;</span>
|
|
<span class="br0">}</span>
|
|
|
|
<span class="kw1">template</span> <span class="sy1"><</span><span class="kw1">class</span><span class="sy1">></span> <span class="kw1">struct</span> difference_type<span class="sy4">;</span>
|
|
<span class="kw1">template</span> <span class="sy1"><</span><span class="kw1">class</span> T<span class="sy1">></span> <span class="kw1">using</span> difference_type_t
|
|
<span class="sy1">=</span> <span class="kw1">typename</span> difference_type<span class="sy1"><</span>T<span class="sy1">></span><span class="sy4">::</span><span class="me2">type</span><span class="sy4">;</span>
|
|
|
|
<span class="kw1">template</span> <span class="sy1"><</span><span class="kw1">class</span><span class="sy1">></span> <span class="kw1">struct</span> value_type<span class="sy4">;</span>
|
|
<span class="kw1">template</span> <span class="sy1"><</span><span class="kw1">class</span> T<span class="sy1">></span> <span class="kw1">using</span> value_type_t
|
|
<span class="sy1">=</span> <span class="kw1">typename</span> value_type<span class="sy1"><</span>T<span class="sy1">></span><span class="sy4">::</span><span class="me2">type</span><span class="sy4">;</span>
|
|
|
|
<span class="kw1">template</span> <span class="sy1"><</span><span class="kw1">class</span><span class="sy1">></span> <span class="kw1">struct</span> iterator_category<span class="sy4">;</span>
|
|
<span class="kw1">template</span> <span class="sy1"><</span><span class="kw1">class</span> T<span class="sy1">></span> <span class="kw1">using</span> iterator_category_t
|
|
<span class="sy1">=</span> <span class="kw1">typename</span> iterator_category<span class="sy1"><</span>T<span class="sy1">></span><span class="sy4">::</span><span class="me2">type</span><span class="sy4">;</span>
|
|
|
|
<span class="kw1">template</span> <span class="sy1"><</span><span class="coMULTI">/* dereferenceable */</span> T<span class="sy1">></span> <span class="kw1">using</span> reference_t
|
|
<span class="sy1">=</span> decltype<span class="br0">(</span><span class="sy2">*</span>declval<span class="sy1"><</span>T<span class="sy3">&</span><span class="sy1">></span><span class="br0">(</span><span class="br0">)</span><span class="br0">)</span><span class="sy4">;</span>
|
|
|
|
<span class="kw1">template</span> <span class="sy1"><</span><span class="coMULTI">/* dereferenceable */</span> T<span class="sy1">></span>
|
|
requires <span class="coMULTI">/* 见定义 */</span> <span class="kw1">using</span> rvalue_reference_t
|
|
<span class="sy1">=</span> decltype<span class="br0">(</span>ranges<span class="sy4">::</span><span class="me2">iter_move</span><span class="br0">(</span>declval<span class="sy1"><</span>T<span class="sy3">&</span><span class="sy1">></span><span class="br0">(</span><span class="br0">)</span><span class="br0">)</span><span class="br0">)</span><span class="sy4">;</span>
|
|
|
|
<span class="kw1">template</span> <span class="sy1"><</span><span class="kw1">class</span> In<span class="sy1">></span>
|
|
concept <span class="kw4">bool</span> Readable <span class="sy1">=</span> <span class="coMULTI">/* 见定义 */</span><span class="sy4">;</span>
|
|
|
|
<span class="kw1">template</span> <span class="sy1"><</span><span class="kw1">class</span> Out, <span class="kw1">class</span> T<span class="sy1">></span>
|
|
concept <span class="kw4">bool</span> Writable <span class="sy1">=</span> <span class="coMULTI">/* 见定义 */</span><span class="sy4">;</span>
|
|
|
|
<span class="kw1">template</span> <span class="sy1"><</span><span class="kw1">class</span> I<span class="sy1">></span>
|
|
concept <span class="kw4">bool</span> WeaklyIncrementable <span class="sy1">=</span> <span class="coMULTI">/* 见定义 */</span><span class="sy4">;</span>
|
|
|
|
<span class="kw1">template</span> <span class="sy1"><</span><span class="kw1">class</span> I<span class="sy1">></span>
|
|
concept <span class="kw4">bool</span> Incrementable <span class="sy1">=</span> <span class="coMULTI">/* 见定义 */</span><span class="sy4">;</span>
|
|
|
|
<span class="kw1">template</span> <span class="sy1"><</span><span class="kw1">class</span> I<span class="sy1">></span>
|
|
concept <span class="kw4">bool</span> Iterator <span class="sy1">=</span> <span class="coMULTI">/* 见定义 */</span><span class="sy4">;</span>
|
|
|
|
<span class="kw1">template</span> <span class="sy1"><</span><span class="kw1">class</span> S, <span class="kw1">class</span> I<span class="sy1">></span>
|
|
concept <span class="kw4">bool</span> Sentinel <span class="sy1">=</span> <span class="coMULTI">/* 见定义 */</span><span class="sy4">;</span>
|
|
|
|
<span class="kw1">template</span> <span class="sy1"><</span><span class="kw1">class</span> S, <span class="kw1">class</span> I<span class="sy1">></span>
|
|
<span class="kw4">constexpr</span> <span class="kw4">bool</span> disable_sized_sentinel <span class="sy1">=</span> <span class="kw2">false</span><span class="sy4">;</span>
|
|
|
|
<span class="kw1">template</span> <span class="sy1"><</span><span class="kw1">class</span> S, <span class="kw1">class</span> I<span class="sy1">></span>
|
|
concept <span class="kw4">bool</span> SizedSentinel <span class="sy1">=</span> <span class="coMULTI">/* 见定义 */</span><span class="sy4">;</span>
|
|
|
|
<span class="kw1">template</span> <span class="sy1"><</span><span class="kw1">class</span> I<span class="sy1">></span>
|
|
concept <span class="kw4">bool</span> InputIterator <span class="sy1">=</span> <span class="coMULTI">/* 见定义 */</span><span class="sy4">;</span>
|
|
|
|
<span class="kw1">template</span> <span class="sy1"><</span><span class="kw1">class</span> I<span class="sy1">></span>
|
|
concept <span class="kw4">bool</span> OutputIterator <span class="sy1">=</span> <span class="coMULTI">/* 见定义 */</span><span class="sy4">;</span>
|
|
|
|
<span class="kw1">template</span> <span class="sy1"><</span><span class="kw1">class</span> I<span class="sy1">></span>
|
|
concept <span class="kw4">bool</span> ForwardIterator <span class="sy1">=</span> <span class="coMULTI">/* 见定义 */</span><span class="sy4">;</span>
|
|
|
|
<span class="kw1">template</span> <span class="sy1"><</span><span class="kw1">class</span> I<span class="sy1">></span>
|
|
concept <span class="kw4">bool</span> BidirectionalIterator <span class="sy1">=</span> <span class="coMULTI">/* 见定义 */</span><span class="sy4">;</span>
|
|
|
|
<span class="kw1">template</span> <span class="sy1"><</span><span class="kw1">class</span> I<span class="sy1">></span>
|
|
concept <span class="kw4">bool</span> RandomAccessIterator <span class="sy1">=</span> <span class="coMULTI">/* 见定义 */</span><span class="sy4">;</span>
|
|
|
|
<span class="kw1">template</span> <span class="sy1"><</span><span class="kw1">class</span> F, <span class="kw1">class</span> I<span class="sy1">></span>
|
|
concept <span class="kw4">bool</span> IndirectUnaryInvocable <span class="sy1">=</span> <span class="coMULTI">/* 见定义 */</span><span class="sy4">;</span>
|
|
|
|
<span class="kw1">template</span> <span class="sy1"><</span><span class="kw1">class</span> F, <span class="kw1">class</span> I<span class="sy1">></span>
|
|
concept <span class="kw4">bool</span> IndirectRegularUnaryInvocable <span class="sy1">=</span> <span class="coMULTI">/* 见定义 */</span><span class="sy4">;</span>
|
|
|
|
<span class="kw1">template</span> <span class="sy1"><</span><span class="kw1">class</span> F, <span class="kw1">class</span> I<span class="sy1">></span>
|
|
concept <span class="kw4">bool</span> IndirectUnaryPredicate <span class="sy1">=</span> <span class="coMULTI">/* 见定义 */</span><span class="sy4">;</span>
|
|
|
|
<span class="kw1">template</span> <span class="sy1"><</span><span class="kw1">class</span> F, <span class="kw1">class</span> I1, <span class="kw1">class</span> I2 <span class="sy1">=</span> I1<span class="sy1">></span>
|
|
concept <span class="kw4">bool</span> IndirectRelation <span class="sy1">=</span> <span class="coMULTI">/* 见定义 */</span><span class="sy4">;</span>
|
|
|
|
<span class="kw1">template</span> <span class="sy1"><</span><span class="kw1">class</span> F, <span class="kw1">class</span> I1, <span class="kw1">class</span> I2 <span class="sy1">=</span> I1<span class="sy1">></span>
|
|
concept <span class="kw4">bool</span> IndirectStrictWeakOrder <span class="sy1">=</span> <span class="coMULTI">/* 见定义 */</span><span class="sy4">;</span>
|
|
|
|
<span class="kw1">template</span> <span class="sy1"><</span><span class="kw1">class</span><span class="sy1">></span> <span class="kw1">struct</span> indirect_result_of<span class="sy4">;</span>
|
|
|
|
<span class="kw1">template</span> <span class="sy1"><</span><span class="kw1">class</span> F, <span class="kw1">class</span>... <span class="me1">Is</span><span class="sy1">></span>
|
|
requires Invocable<span class="sy1"><</span>F, reference_t<span class="sy1"><</span>Is<span class="sy1">></span>...<span class="sy1">></span>
|
|
<span class="kw1">struct</span> indirect_result_of<span class="sy1"><</span>F<span class="br0">(</span>Is...<span class="br0">)</span><span class="sy1">></span><span class="sy4">;</span>
|
|
|
|
<span class="kw1">template</span> <span class="sy1"><</span><span class="kw1">class</span> F<span class="sy1">></span>
|
|
<span class="kw1">using</span> indirect_result_of_t
|
|
<span class="sy1">=</span> <span class="kw1">typename</span> indirect_result_of<span class="sy1"><</span>F<span class="sy1">></span><span class="sy4">::</span><span class="me2">type</span><span class="sy4">;</span>
|
|
|
|
<span class="kw1">template</span> <span class="sy1"><</span>Readable I, IndirectRegularUnaryInvocable<span class="sy1"><</span>I<span class="sy1">></span> Proj<span class="sy1">></span>
|
|
<span class="kw1">struct</span> projected<span class="sy4">;</span>
|
|
|
|
<span class="kw1">template</span> <span class="sy1"><</span>WeaklyIncrementable I, <span class="kw1">class</span> Proj<span class="sy1">></span>
|
|
<span class="kw1">struct</span> difference_type<span class="sy1"><</span>projected<span class="sy1"><</span>I, Proj<span class="sy1">>></span><span class="sy4">;</span>
|
|
|
|
<span class="kw1">template</span> <span class="sy1"><</span><span class="kw1">class</span> In, <span class="kw1">class</span> Out<span class="sy1">></span>
|
|
concept <span class="kw4">bool</span> IndirectlyMovable <span class="sy1">=</span> <span class="coMULTI">/* 见定义 */</span><span class="sy4">;</span>
|
|
|
|
<span class="kw1">template</span> <span class="sy1"><</span><span class="kw1">class</span> In, <span class="kw1">class</span> Out<span class="sy1">></span>
|
|
concept <span class="kw4">bool</span> IndirectlyMovableStorable <span class="sy1">=</span> <span class="coMULTI">/* 见定义 */</span><span class="sy4">;</span>
|
|
|
|
<span class="kw1">template</span> <span class="sy1"><</span><span class="kw1">class</span> In, <span class="kw1">class</span> Out<span class="sy1">></span>
|
|
concept <span class="kw4">bool</span> IndirectlyCopyable <span class="sy1">=</span> <span class="coMULTI">/* 见定义 */</span><span class="sy4">;</span>
|
|
|
|
<span class="kw1">template</span> <span class="sy1"><</span><span class="kw1">class</span> In, <span class="kw1">class</span> Out<span class="sy1">></span>
|
|
concept <span class="kw4">bool</span> IndirectlyCopyableStorable <span class="sy1">=</span> <span class="coMULTI">/* 见定义 */</span><span class="sy4">;</span>
|
|
|
|
<span class="kw1">template</span> <span class="sy1"><</span><span class="kw1">class</span> I1, <span class="kw1">class</span> I2 <span class="sy1">=</span> I1<span class="sy1">></span>
|
|
concept <span class="kw4">bool</span> IndirectlySwappable <span class="sy1">=</span> <span class="coMULTI">/* 见定义 */</span><span class="sy4">;</span>
|
|
|
|
<span class="kw1">template</span> <span class="sy1"><</span><span class="kw1">class</span> I1, <span class="kw1">class</span> I2, <span class="kw1">class</span> R <span class="sy1">=</span> equal_to<span class="sy1"><></span>, <span class="kw1">class</span> P1 <span class="sy1">=</span> identity,
|
|
<span class="kw1">class</span> P2 <span class="sy1">=</span> identity<span class="sy1">></span>
|
|
concept <span class="kw4">bool</span> IndirectlyComparable <span class="sy1">=</span> <span class="coMULTI">/* 见定义 */</span><span class="sy4">;</span>
|
|
|
|
<span class="kw1">template</span> <span class="sy1"><</span><span class="kw1">class</span> I<span class="sy1">></span>
|
|
concept <span class="kw4">bool</span> Permutable <span class="sy1">=</span> <span class="coMULTI">/* 见定义 */</span><span class="sy4">;</span>
|
|
|
|
<span class="kw1">template</span> <span class="sy1"><</span><span class="kw1">class</span> I1, <span class="kw1">class</span> I2, <span class="kw1">class</span> Out,
|
|
<span class="kw1">class</span> R <span class="sy1">=</span> less<span class="sy1"><></span>, <span class="kw1">class</span> P1 <span class="sy1">=</span> identity, <span class="kw1">class</span> P2 <span class="sy1">=</span> identity<span class="sy1">></span>
|
|
concept <span class="kw4">bool</span> Mergeable <span class="sy1">=</span> <span class="coMULTI">/* 见定义 */</span><span class="sy4">;</span>
|
|
|
|
<span class="kw1">template</span> <span class="sy1"><</span><span class="kw1">class</span> I, <span class="kw1">class</span> R <span class="sy1">=</span> less<span class="sy1"><></span>, <span class="kw1">class</span> P <span class="sy1">=</span> identity<span class="sy1">></span>
|
|
concept <span class="kw4">bool</span> Sortable <span class="sy1">=</span> <span class="coMULTI">/* 见定义 */</span><span class="sy4">;</span>
|
|
|
|
<span class="kw1">template</span> <span class="sy1"><</span><span class="kw1">class</span> Iterator<span class="sy1">></span> <span class="kw1">using</span> iterator_traits <span class="sy1">=</span> <span class="coMULTI">/* 见定义 */</span><span class="sy4">;</span>
|
|
|
|
<span class="kw1">template</span> <span class="sy1"><</span>Readable T<span class="sy1">></span> <span class="kw1">using</span> iter_common_reference_t
|
|
<span class="sy1">=</span> common_reference_t<span class="sy1"><</span>reference_t<span class="sy1"><</span>T<span class="sy1">></span>, value_type_t<span class="sy1"><</span>T<span class="sy1">></span><span class="sy3">&</span><span class="sy1">></span><span class="sy4">;</span>
|
|
|
|
<span class="kw1">struct</span> output_iterator_tag <span class="br0">{</span> <span class="br0">}</span><span class="sy4">;</span>
|
|
<span class="kw1">struct</span> input_iterator_tag <span class="br0">{</span> <span class="br0">}</span><span class="sy4">;</span>
|
|
<span class="kw1">struct</span> forward_iterator_tag <span class="sy4">:</span> input_iterator_tag <span class="br0">{</span> <span class="br0">}</span><span class="sy4">;</span>
|
|
<span class="kw1">struct</span> bidirectional_iterator_tag <span class="sy4">:</span> forward_iterator_tag <span class="br0">{</span> <span class="br0">}</span><span class="sy4">;</span>
|
|
<span class="kw1">struct</span> random_access_iterator_tag <span class="sy4">:</span> bidirectional_iterator_tag <span class="br0">{</span> <span class="br0">}</span><span class="sy4">;</span>
|
|
|
|
<span class="kw1">namespace</span> <span class="br0">{</span>
|
|
<span class="kw4">constexpr</span> <span class="coMULTI">/* 未指明 */</span> advance <span class="sy1">=</span> <span class="coMULTI">/* 未指明 */</span><span class="sy4">;</span>
|
|
<span class="kw4">constexpr</span> <span class="coMULTI">/* 未指明 */</span> distance <span class="sy1">=</span> <span class="coMULTI">/* 未指明 */</span><span class="sy4">;</span>
|
|
<span class="kw4">constexpr</span> <span class="coMULTI">/* 未指明 */</span> next <span class="sy1">=</span> <span class="coMULTI">/* 未指明 */</span><span class="sy4">;</span>
|
|
<span class="kw4">constexpr</span> <span class="coMULTI">/* 未指明 */</span> prev <span class="sy1">=</span> <span class="coMULTI">/* 未指明 */</span><span class="sy4">;</span>
|
|
<span class="br0">}</span>
|
|
|
|
<span class="kw1">template</span> <span class="sy1"><</span>BidirectionalIterator I<span class="sy1">></span> <span class="kw1">class</span> reverse_iterator<span class="sy4">;</span>
|
|
|
|
<span class="kw1">template</span> <span class="sy1"><</span><span class="kw1">class</span> I1, <span class="kw1">class</span> I2<span class="sy1">></span>
|
|
requires EqualityComparableWith<span class="sy1"><</span>I1, I2<span class="sy1">></span>
|
|
<span class="kw4">constexpr</span> <span class="kw4">bool</span> operator<span class="sy1">==</span><span class="br0">(</span>
|
|
<span class="kw4">const</span> reverse_iterator<span class="sy1"><</span>I1<span class="sy1">></span><span class="sy3">&</span> x,
|
|
<span class="kw4">const</span> reverse_iterator<span class="sy1"><</span>I2<span class="sy1">></span><span class="sy3">&</span> y<span class="br0">)</span><span class="sy4">;</span>
|
|
<span class="kw1">template</span> <span class="sy1"><</span><span class="kw1">class</span> I1, <span class="kw1">class</span> I2<span class="sy1">></span>
|
|
requires EqualityComparableWith<span class="sy1"><</span>I1, I2<span class="sy1">></span>
|
|
<span class="kw4">constexpr</span> <span class="kw4">bool</span> operator<span class="sy3">!</span><span class="sy1">=</span><span class="br0">(</span>
|
|
<span class="kw4">const</span> reverse_iterator<span class="sy1"><</span>I1<span class="sy1">></span><span class="sy3">&</span> x,
|
|
<span class="kw4">const</span> reverse_iterator<span class="sy1"><</span>I2<span class="sy1">></span><span class="sy3">&</span> y<span class="br0">)</span><span class="sy4">;</span>
|
|
<span class="kw1">template</span> <span class="sy1"><</span><span class="kw1">class</span> I1, <span class="kw1">class</span> I2<span class="sy1">></span>
|
|
requires StrictTotallyOrderedWith<span class="sy1"><</span>I1, I2<span class="sy1">></span>
|
|
<span class="kw4">constexpr</span> <span class="kw4">bool</span> operator<span class="sy1"><</span><span class="br0">(</span>
|
|
<span class="kw4">const</span> reverse_iterator<span class="sy1"><</span>I1<span class="sy1">></span><span class="sy3">&</span> x,
|
|
<span class="kw4">const</span> reverse_iterator<span class="sy1"><</span>I2<span class="sy1">></span><span class="sy3">&</span> y<span class="br0">)</span><span class="sy4">;</span>
|
|
<span class="kw1">template</span> <span class="sy1"><</span><span class="kw1">class</span> I1, <span class="kw1">class</span> I2<span class="sy1">></span>
|
|
requires StrictTotallyOrderedWith<span class="sy1"><</span>I1, I2<span class="sy1">></span>
|
|
<span class="kw4">constexpr</span> <span class="kw4">bool</span> operator<span class="sy1">></span><span class="br0">(</span>
|
|
<span class="kw4">const</span> reverse_iterator<span class="sy1"><</span>I1<span class="sy1">></span><span class="sy3">&</span> x,
|
|
<span class="kw4">const</span> reverse_iterator<span class="sy1"><</span>I2<span class="sy1">></span><span class="sy3">&</span> y<span class="br0">)</span><span class="sy4">;</span>
|
|
<span class="kw1">template</span> <span class="sy1"><</span><span class="kw1">class</span> I1, <span class="kw1">class</span> I2<span class="sy1">></span>
|
|
requires StrictTotallyOrderedWith<span class="sy1"><</span>I1, I2<span class="sy1">></span>
|
|
<span class="kw4">constexpr</span> <span class="kw4">bool</span> operator<span class="sy1">>=</span><span class="br0">(</span>
|
|
<span class="kw4">const</span> reverse_iterator<span class="sy1"><</span>I1<span class="sy1">></span><span class="sy3">&</span> x,
|
|
<span class="kw4">const</span> reverse_iterator<span class="sy1"><</span>I2<span class="sy1">></span><span class="sy3">&</span> y<span class="br0">)</span><span class="sy4">;</span>
|
|
<span class="kw1">template</span> <span class="sy1"><</span><span class="kw1">class</span> I1, <span class="kw1">class</span> I2<span class="sy1">></span>
|
|
requires StrictTotallyOrderedWith<span class="sy1"><</span>I1, I2<span class="sy1">></span>
|
|
<span class="kw4">constexpr</span> <span class="kw4">bool</span> operator<span class="sy1"><=</span><span class="br0">(</span>
|
|
<span class="kw4">const</span> reverse_iterator<span class="sy1"><</span>I1<span class="sy1">></span><span class="sy3">&</span> x,
|
|
<span class="kw4">const</span> reverse_iterator<span class="sy1"><</span>I2<span class="sy1">></span><span class="sy3">&</span> y<span class="br0">)</span><span class="sy4">;</span>
|
|
|
|
<span class="kw1">template</span> <span class="sy1"><</span><span class="kw1">class</span> I1, <span class="kw1">class</span> I2<span class="sy1">></span>
|
|
requires SizedSentinel<span class="sy1"><</span>I1, I2<span class="sy1">></span>
|
|
<span class="kw4">constexpr</span> difference_type_t<span class="sy1"><</span>I2<span class="sy1">></span> operator<span class="sy2">-</span><span class="br0">(</span>
|
|
<span class="kw4">const</span> reverse_iterator<span class="sy1"><</span>I1<span class="sy1">></span><span class="sy3">&</span> x,
|
|
<span class="kw4">const</span> reverse_iterator<span class="sy1"><</span>I2<span class="sy1">></span><span class="sy3">&</span> y<span class="br0">)</span><span class="sy4">;</span>
|
|
<span class="kw1">template</span> <span class="sy1"><</span>RandomAccessIterator I<span class="sy1">></span>
|
|
<span class="kw4">constexpr</span> reverse_iterator<span class="sy1"><</span>I<span class="sy1">></span> operator<span class="sy2">+</span><span class="br0">(</span>
|
|
difference_type_t<span class="sy1"><</span>I<span class="sy1">></span> n,
|
|
<span class="kw4">const</span> reverse_iterator<span class="sy1"><</span>I<span class="sy1">></span><span class="sy3">&</span> x<span class="br0">)</span><span class="sy4">;</span>
|
|
|
|
<span class="kw1">template</span> <span class="sy1"><</span>BidirectionalIterator I<span class="sy1">></span>
|
|
<span class="kw4">constexpr</span> reverse_iterator<span class="sy1"><</span>I<span class="sy1">></span> make_reverse_iterator<span class="br0">(</span>I i<span class="br0">)</span><span class="sy4">;</span>
|
|
|
|
<span class="kw1">template</span> <span class="sy1"><</span><span class="kw1">class</span> Container<span class="sy1">></span> <span class="kw1">class</span> back_insert_iterator<span class="sy4">;</span>
|
|
<span class="kw1">template</span> <span class="sy1"><</span><span class="kw1">class</span> Container<span class="sy1">></span>
|
|
back_insert_iterator<span class="sy1"><</span>Container<span class="sy1">></span> back_inserter<span class="br0">(</span>Container<span class="sy3">&</span> x<span class="br0">)</span><span class="sy4">;</span>
|
|
|
|
<span class="kw1">template</span> <span class="sy1"><</span><span class="kw1">class</span> Container<span class="sy1">></span> <span class="kw1">class</span> front_insert_iterator<span class="sy4">;</span>
|
|
<span class="kw1">template</span> <span class="sy1"><</span><span class="kw1">class</span> Container<span class="sy1">></span>
|
|
front_insert_iterator<span class="sy1"><</span>Container<span class="sy1">></span> front_inserter<span class="br0">(</span>Container<span class="sy3">&</span> x<span class="br0">)</span><span class="sy4">;</span>
|
|
|
|
<span class="kw1">template</span> <span class="sy1"><</span><span class="kw1">class</span> Container<span class="sy1">></span> <span class="kw1">class</span> insert_iterator<span class="sy4">;</span>
|
|
<span class="kw1">template</span> <span class="sy1"><</span><span class="kw1">class</span> Container<span class="sy1">></span>
|
|
insert_iterator<span class="sy1"><</span>Container<span class="sy1">></span> inserter<span class="br0">(</span>Container<span class="sy3">&</span> x, iterator_t<span class="sy1"><</span>Container<span class="sy1">></span> i<span class="br0">)</span><span class="sy4">;</span>
|
|
|
|
<span class="kw1">template</span> <span class="sy1"><</span>InputIterator I<span class="sy1">></span> <span class="kw1">class</span> move_iterator<span class="sy4">;</span>
|
|
|
|
<span class="kw1">template</span> <span class="sy1"><</span><span class="kw1">class</span> I1, <span class="kw1">class</span> I2<span class="sy1">></span>
|
|
requires EqualityComparableWith<span class="sy1"><</span>I1, I2<span class="sy1">></span>
|
|
<span class="kw4">constexpr</span> <span class="kw4">bool</span> operator<span class="sy1">==</span><span class="br0">(</span>
|
|
<span class="kw4">const</span> move_iterator<span class="sy1"><</span>I1<span class="sy1">></span><span class="sy3">&</span> x, <span class="kw4">const</span> move_iterator<span class="sy1"><</span>I2<span class="sy1">></span><span class="sy3">&</span> y<span class="br0">)</span><span class="sy4">;</span>
|
|
<span class="kw1">template</span> <span class="sy1"><</span><span class="kw1">class</span> I1, <span class="kw1">class</span> I2<span class="sy1">></span>
|
|
requires EqualityComparableWith<span class="sy1"><</span>I1, I2<span class="sy1">></span>
|
|
<span class="kw4">constexpr</span> <span class="kw4">bool</span> operator<span class="sy3">!</span><span class="sy1">=</span><span class="br0">(</span>
|
|
<span class="kw4">const</span> move_iterator<span class="sy1"><</span>I1<span class="sy1">></span><span class="sy3">&</span> x, <span class="kw4">const</span> move_iterator<span class="sy1"><</span>I2<span class="sy1">></span><span class="sy3">&</span> y<span class="br0">)</span><span class="sy4">;</span>
|
|
<span class="kw1">template</span> <span class="sy1"><</span><span class="kw1">class</span> I1, <span class="kw1">class</span> I2<span class="sy1">></span>
|
|
requires StrictTotallyOrderedWith<span class="sy1"><</span>I1, I2<span class="sy1">></span>
|
|
<span class="kw4">constexpr</span> <span class="kw4">bool</span> operator<span class="sy1"><</span><span class="br0">(</span>
|
|
<span class="kw4">const</span> move_iterator<span class="sy1"><</span>I1<span class="sy1">></span><span class="sy3">&</span> x, <span class="kw4">const</span> move_iterator<span class="sy1"><</span>I2<span class="sy1">></span><span class="sy3">&</span> y<span class="br0">)</span><span class="sy4">;</span>
|
|
<span class="kw1">template</span> <span class="sy1"><</span><span class="kw1">class</span> I1, <span class="kw1">class</span> I2<span class="sy1">></span>
|
|
requires StrictTotallyOrderedWith<span class="sy1"><</span>I1, I2<span class="sy1">></span>
|
|
<span class="kw4">constexpr</span> <span class="kw4">bool</span> operator<span class="sy1"><=</span><span class="br0">(</span>
|
|
<span class="kw4">const</span> move_iterator<span class="sy1"><</span>I1<span class="sy1">></span><span class="sy3">&</span> x, <span class="kw4">const</span> move_iterator<span class="sy1"><</span>I2<span class="sy1">></span><span class="sy3">&</span> y<span class="br0">)</span><span class="sy4">;</span>
|
|
<span class="kw1">template</span> <span class="sy1"><</span><span class="kw1">class</span> I1, <span class="kw1">class</span> I2<span class="sy1">></span>
|
|
requires StrictTotallyOrderedWith<span class="sy1"><</span>I1, I2<span class="sy1">></span>
|
|
<span class="kw4">constexpr</span> <span class="kw4">bool</span> operator<span class="sy1">></span><span class="br0">(</span>
|
|
<span class="kw4">const</span> move_iterator<span class="sy1"><</span>I1<span class="sy1">></span><span class="sy3">&</span> x, <span class="kw4">const</span> move_iterator<span class="sy1"><</span>I2<span class="sy1">></span><span class="sy3">&</span> y<span class="br0">)</span><span class="sy4">;</span>
|
|
<span class="kw1">template</span> <span class="sy1"><</span><span class="kw1">class</span> I1, <span class="kw1">class</span> I2<span class="sy1">></span>
|
|
requires StrictTotallyOrderedWith<span class="sy1"><</span>I1, I2<span class="sy1">></span>
|
|
<span class="kw4">constexpr</span> <span class="kw4">bool</span> operator<span class="sy1">>=</span><span class="br0">(</span>
|
|
<span class="kw4">const</span> move_iterator<span class="sy1"><</span>I1<span class="sy1">></span><span class="sy3">&</span> x, <span class="kw4">const</span> move_iterator<span class="sy1"><</span>I2<span class="sy1">></span><span class="sy3">&</span> y<span class="br0">)</span><span class="sy4">;</span>
|
|
|
|
<span class="kw1">template</span> <span class="sy1"><</span><span class="kw1">class</span> I1, <span class="kw1">class</span> I2<span class="sy1">></span>
|
|
requires SizedSentinel<span class="sy1"><</span>I1, I2<span class="sy1">></span>
|
|
<span class="kw4">constexpr</span> difference_type_t<span class="sy1"><</span>I2<span class="sy1">></span> operator<span class="sy2">-</span><span class="br0">(</span>
|
|
<span class="kw4">const</span> move_iterator<span class="sy1"><</span>I1<span class="sy1">></span><span class="sy3">&</span> x,
|
|
<span class="kw4">const</span> move_iterator<span class="sy1"><</span>I2<span class="sy1">></span><span class="sy3">&</span> y<span class="br0">)</span><span class="sy4">;</span>
|
|
<span class="kw1">template</span> <span class="sy1"><</span>RandomAccessIterator I<span class="sy1">></span>
|
|
<span class="kw4">constexpr</span> move_iterator<span class="sy1"><</span>I<span class="sy1">></span> operator<span class="sy2">+</span><span class="br0">(</span>
|
|
difference_type_t<span class="sy1"><</span>I<span class="sy1">></span> n,
|
|
<span class="kw4">const</span> move_iterator<span class="sy1"><</span>I<span class="sy1">></span><span class="sy3">&</span> x<span class="br0">)</span><span class="sy4">;</span>
|
|
|
|
<span class="kw1">template</span> <span class="sy1"><</span>InputIterator I<span class="sy1">></span>
|
|
<span class="kw4">constexpr</span> move_iterator<span class="sy1"><</span>I<span class="sy1">></span> make_move_iterator<span class="br0">(</span>I i<span class="br0">)</span><span class="sy4">;</span>
|
|
|
|
<span class="kw1">template</span> <span class="sy1"><</span>Semiregular S<span class="sy1">></span> <span class="kw1">class</span> move_sentinel<span class="sy4">;</span>
|
|
|
|
<span class="kw1">template</span> <span class="sy1"><</span><span class="kw1">class</span> I, Sentinel<span class="sy1"><</span>I<span class="sy1">></span> S<span class="sy1">></span>
|
|
<span class="kw4">constexpr</span> <span class="kw4">bool</span> operator<span class="sy1">==</span><span class="br0">(</span>
|
|
<span class="kw4">const</span> move_iterator<span class="sy1"><</span>I<span class="sy1">></span><span class="sy3">&</span> i, <span class="kw4">const</span> move_sentinel<span class="sy1"><</span>S<span class="sy1">></span><span class="sy3">&</span> s<span class="br0">)</span><span class="sy4">;</span>
|
|
<span class="kw1">template</span> <span class="sy1"><</span><span class="kw1">class</span> I, Sentinel<span class="sy1"><</span>I<span class="sy1">></span> S<span class="sy1">></span>
|
|
<span class="kw4">constexpr</span> <span class="kw4">bool</span> operator<span class="sy1">==</span><span class="br0">(</span>
|
|
<span class="kw4">const</span> move_sentinel<span class="sy1"><</span>S<span class="sy1">></span><span class="sy3">&</span> s, <span class="kw4">const</span> move_iterator<span class="sy1"><</span>I<span class="sy1">></span><span class="sy3">&</span> i<span class="br0">)</span><span class="sy4">;</span>
|
|
<span class="kw1">template</span> <span class="sy1"><</span><span class="kw1">class</span> I, Sentinel<span class="sy1"><</span>I<span class="sy1">></span> S<span class="sy1">></span>
|
|
<span class="kw4">constexpr</span> <span class="kw4">bool</span> operator<span class="sy3">!</span><span class="sy1">=</span><span class="br0">(</span>
|
|
<span class="kw4">const</span> move_iterator<span class="sy1"><</span>I<span class="sy1">></span><span class="sy3">&</span> i, <span class="kw4">const</span> move_sentinel<span class="sy1"><</span>S<span class="sy1">></span><span class="sy3">&</span> s<span class="br0">)</span><span class="sy4">;</span>
|
|
<span class="kw1">template</span> <span class="sy1"><</span><span class="kw1">class</span> I, Sentinel<span class="sy1"><</span>I<span class="sy1">></span> S<span class="sy1">></span>
|
|
<span class="kw4">constexpr</span> <span class="kw4">bool</span> operator<span class="sy3">!</span><span class="sy1">=</span><span class="br0">(</span>
|
|
<span class="kw4">const</span> move_sentinel<span class="sy1"><</span>S<span class="sy1">></span><span class="sy3">&</span> s, <span class="kw4">const</span> move_iterator<span class="sy1"><</span>I<span class="sy1">></span><span class="sy3">&</span> i<span class="br0">)</span><span class="sy4">;</span>
|
|
|
|
<span class="kw1">template</span> <span class="sy1"><</span><span class="kw1">class</span> I, SizedSentinel<span class="sy1"><</span>I<span class="sy1">></span> S<span class="sy1">></span>
|
|
<span class="kw4">constexpr</span> difference_type_t<span class="sy1"><</span>I<span class="sy1">></span> operator<span class="sy2">-</span><span class="br0">(</span>
|
|
<span class="kw4">const</span> move_sentinel<span class="sy1"><</span>S<span class="sy1">></span><span class="sy3">&</span> s, <span class="kw4">const</span> move_iterator<span class="sy1"><</span>I<span class="sy1">></span><span class="sy3">&</span> i<span class="br0">)</span><span class="sy4">;</span>
|
|
<span class="kw1">template</span> <span class="sy1"><</span><span class="kw1">class</span> I, SizedSentinel<span class="sy1"><</span>I<span class="sy1">></span> S<span class="sy1">></span>
|
|
<span class="kw4">constexpr</span> difference_type_t<span class="sy1"><</span>I<span class="sy1">></span> operator<span class="sy2">-</span><span class="br0">(</span>
|
|
<span class="kw4">const</span> move_iterator<span class="sy1"><</span>I<span class="sy1">></span><span class="sy3">&</span> i, <span class="kw4">const</span> move_sentinel<span class="sy1"><</span>S<span class="sy1">></span><span class="sy3">&</span> s<span class="br0">)</span><span class="sy4">;</span>
|
|
|
|
<span class="kw1">template</span> <span class="sy1"><</span>Semiregular S<span class="sy1">></span>
|
|
<span class="kw4">constexpr</span> move_sentinel<span class="sy1"><</span>S<span class="sy1">></span> make_move_sentinel<span class="br0">(</span>S s<span class="br0">)</span><span class="sy4">;</span>
|
|
|
|
<span class="kw1">template</span> <span class="sy1"><</span>Iterator I, Sentinel<span class="sy1"><</span>I<span class="sy1">></span> S<span class="sy1">></span>
|
|
requires <span class="sy3">!</span>Same<span class="sy1"><</span>I, S<span class="sy1">></span>
|
|
<span class="kw1">class</span> common_iterator<span class="sy4">;</span>
|
|
|
|
<span class="kw1">template</span> <span class="sy1"><</span>Readable I, <span class="kw1">class</span> S<span class="sy1">></span>
|
|
<span class="kw1">struct</span> value_type<span class="sy1"><</span>common_iterator<span class="sy1"><</span>I, S<span class="sy1">>></span><span class="sy4">;</span>
|
|
|
|
<span class="kw1">template</span> <span class="sy1"><</span>InputIterator I, <span class="kw1">class</span> S<span class="sy1">></span>
|
|
<span class="kw1">struct</span> iterator_category<span class="sy1"><</span>common_iterator<span class="sy1"><</span>I, S<span class="sy1">>></span><span class="sy4">;</span>
|
|
|
|
<span class="kw1">template</span> <span class="sy1"><</span>ForwardIterator I, <span class="kw1">class</span> S<span class="sy1">></span>
|
|
<span class="kw1">struct</span> iterator_category<span class="sy1"><</span>common_iterator<span class="sy1"><</span>I, S<span class="sy1">>></span><span class="sy4">;</span>
|
|
|
|
<span class="kw1">template</span> <span class="sy1"><</span><span class="kw1">class</span> I1, <span class="kw1">class</span> I2, Sentinel<span class="sy1"><</span>I2<span class="sy1">></span> S1, Sentinel<span class="sy1"><</span>I1<span class="sy1">></span> S2<span class="sy1">></span>
|
|
<span class="kw4">bool</span> operator<span class="sy1">==</span><span class="br0">(</span>
|
|
<span class="kw4">const</span> common_iterator<span class="sy1"><</span>I1, S1<span class="sy1">></span><span class="sy3">&</span> x, <span class="kw4">const</span> common_iterator<span class="sy1"><</span>I2, S2<span class="sy1">></span><span class="sy3">&</span> y<span class="br0">)</span><span class="sy4">;</span>
|
|
<span class="kw1">template</span> <span class="sy1"><</span><span class="kw1">class</span> I1, <span class="kw1">class</span> I2, Sentinel<span class="sy1"><</span>I2<span class="sy1">></span> S1, Sentinel<span class="sy1"><</span>I1<span class="sy1">></span> S2<span class="sy1">></span>
|
|
requires EqualityComparableWith<span class="sy1"><</span>I1, I2<span class="sy1">></span>
|
|
<span class="kw4">bool</span> operator<span class="sy1">==</span><span class="br0">(</span>
|
|
<span class="kw4">const</span> common_iterator<span class="sy1"><</span>I1, S1<span class="sy1">></span><span class="sy3">&</span> x, <span class="kw4">const</span> common_iterator<span class="sy1"><</span>I2, S2<span class="sy1">></span><span class="sy3">&</span> y<span class="br0">)</span><span class="sy4">;</span>
|
|
<span class="kw1">template</span> <span class="sy1"><</span><span class="kw1">class</span> I1, <span class="kw1">class</span> I2, Sentinel<span class="sy1"><</span>I2<span class="sy1">></span> S1, Sentinel<span class="sy1"><</span>I1<span class="sy1">></span> S2<span class="sy1">></span>
|
|
<span class="kw4">bool</span> operator<span class="sy3">!</span><span class="sy1">=</span><span class="br0">(</span>
|
|
<span class="kw4">const</span> common_iterator<span class="sy1"><</span>I1, S1<span class="sy1">></span><span class="sy3">&</span> x, <span class="kw4">const</span> common_iterator<span class="sy1"><</span>I2, S2<span class="sy1">></span><span class="sy3">&</span> y<span class="br0">)</span><span class="sy4">;</span>
|
|
|
|
<span class="kw1">template</span> <span class="sy1"><</span><span class="kw1">class</span> I2, SizedSentinel<span class="sy1"><</span>I2<span class="sy1">></span> I1, SizedSentinel<span class="sy1"><</span>I2<span class="sy1">></span> S1, SizedSentinel<span class="sy1"><</span>I1<span class="sy1">></span> S2<span class="sy1">></span>
|
|
difference_type_t<span class="sy1"><</span>I2<span class="sy1">></span> operator<span class="sy2">-</span><span class="br0">(</span>
|
|
<span class="kw4">const</span> common_iterator<span class="sy1"><</span>I1, S1<span class="sy1">></span><span class="sy3">&</span> x, <span class="kw4">const</span> common_iterator<span class="sy1"><</span>I2, S2<span class="sy1">></span><span class="sy3">&</span> y<span class="br0">)</span><span class="sy4">;</span>
|
|
|
|
<span class="kw1">class</span> default_sentinel<span class="sy4">;</span>
|
|
|
|
<span class="kw1">template</span> <span class="sy1"><</span>Iterator I<span class="sy1">></span> <span class="kw1">class</span> counted_iterator<span class="sy4">;</span>
|
|
|
|
<span class="kw1">template</span> <span class="sy1"><</span><span class="kw1">class</span> I1, <span class="kw1">class</span> I2<span class="sy1">></span>
|
|
requires Common<span class="sy1"><</span>I1, I2<span class="sy1">></span>
|
|
<span class="kw4">constexpr</span> <span class="kw4">bool</span> operator<span class="sy1">==</span><span class="br0">(</span>
|
|
<span class="kw4">const</span> counted_iterator<span class="sy1"><</span>I1<span class="sy1">></span><span class="sy3">&</span> x, <span class="kw4">const</span> counted_iterator<span class="sy1"><</span>I2<span class="sy1">></span><span class="sy3">&</span> y<span class="br0">)</span><span class="sy4">;</span>
|
|
<span class="kw4">constexpr</span> <span class="kw4">bool</span> operator<span class="sy1">==</span><span class="br0">(</span>
|
|
<span class="kw4">const</span> counted_iterator<span class="sy1"><</span><span class="kw4">auto</span><span class="sy1">></span><span class="sy3">&</span> x, default_sentinel<span class="br0">)</span><span class="sy4">;</span>
|
|
<span class="kw4">constexpr</span> <span class="kw4">bool</span> operator<span class="sy1">==</span><span class="br0">(</span>
|
|
default_sentinel, <span class="kw4">const</span> counted_iterator<span class="sy1"><</span><span class="kw4">auto</span><span class="sy1">></span><span class="sy3">&</span> x<span class="br0">)</span><span class="sy4">;</span>
|
|
<span class="kw1">template</span> <span class="sy1"><</span><span class="kw1">class</span> I1, <span class="kw1">class</span> I2<span class="sy1">></span>
|
|
requires Common<span class="sy1"><</span>I1, I2<span class="sy1">></span>
|
|
<span class="kw4">constexpr</span> <span class="kw4">bool</span> operator<span class="sy3">!</span><span class="sy1">=</span><span class="br0">(</span>
|
|
<span class="kw4">const</span> counted_iterator<span class="sy1"><</span>I1<span class="sy1">></span><span class="sy3">&</span> x, <span class="kw4">const</span> counted_iterator<span class="sy1"><</span>I2<span class="sy1">></span><span class="sy3">&</span> y<span class="br0">)</span><span class="sy4">;</span>
|
|
<span class="kw4">constexpr</span> <span class="kw4">bool</span> operator<span class="sy3">!</span><span class="sy1">=</span><span class="br0">(</span>
|
|
<span class="kw4">const</span> counted_iterator<span class="sy1"><</span><span class="kw4">auto</span><span class="sy1">></span><span class="sy3">&</span> x, default_sentinel y<span class="br0">)</span><span class="sy4">;</span>
|
|
<span class="kw4">constexpr</span> <span class="kw4">bool</span> operator<span class="sy3">!</span><span class="sy1">=</span><span class="br0">(</span>
|
|
default_sentinel x, <span class="kw4">const</span> counted_iterator<span class="sy1"><</span><span class="kw4">auto</span><span class="sy1">></span><span class="sy3">&</span> y<span class="br0">)</span><span class="sy4">;</span>
|
|
<span class="kw1">template</span> <span class="sy1"><</span><span class="kw1">class</span> I1, <span class="kw1">class</span> I2<span class="sy1">></span>
|
|
requires Common<span class="sy1"><</span>I1, I2<span class="sy1">></span>
|
|
<span class="kw4">constexpr</span> <span class="kw4">bool</span> operator<span class="sy1"><</span><span class="br0">(</span>
|
|
<span class="kw4">const</span> counted_iterator<span class="sy1"><</span>I1<span class="sy1">></span><span class="sy3">&</span> x, <span class="kw4">const</span> counted_iterator<span class="sy1"><</span>I2<span class="sy1">></span><span class="sy3">&</span> y<span class="br0">)</span><span class="sy4">;</span>
|
|
<span class="kw1">template</span> <span class="sy1"><</span><span class="kw1">class</span> I1, <span class="kw1">class</span> I2<span class="sy1">></span>
|
|
requires Common<span class="sy1"><</span>I1, I2<span class="sy1">></span>
|
|
<span class="kw4">constexpr</span> <span class="kw4">bool</span> operator<span class="sy1"><=</span><span class="br0">(</span>
|
|
<span class="kw4">const</span> counted_iterator<span class="sy1"><</span>I1<span class="sy1">></span><span class="sy3">&</span> x, <span class="kw4">const</span> counted_iterator<span class="sy1"><</span>I2<span class="sy1">></span><span class="sy3">&</span> y<span class="br0">)</span><span class="sy4">;</span>
|
|
<span class="kw1">template</span> <span class="sy1"><</span><span class="kw1">class</span> I1, <span class="kw1">class</span> I2<span class="sy1">></span>
|
|
requires Common<span class="sy1"><</span>I1, I2<span class="sy1">></span>
|
|
<span class="kw4">constexpr</span> <span class="kw4">bool</span> operator<span class="sy1">></span><span class="br0">(</span>
|
|
<span class="kw4">const</span> counted_iterator<span class="sy1"><</span>I1<span class="sy1">></span><span class="sy3">&</span> x, <span class="kw4">const</span> counted_iterator<span class="sy1"><</span>I2<span class="sy1">></span><span class="sy3">&</span> y<span class="br0">)</span><span class="sy4">;</span>
|
|
<span class="kw1">template</span> <span class="sy1"><</span><span class="kw1">class</span> I1, <span class="kw1">class</span> I2<span class="sy1">></span>
|
|
requires Common<span class="sy1"><</span>I1, I2<span class="sy1">></span>
|
|
<span class="kw4">constexpr</span> <span class="kw4">bool</span> operator<span class="sy1">>=</span><span class="br0">(</span>
|
|
<span class="kw4">const</span> counted_iterator<span class="sy1"><</span>I1<span class="sy1">></span><span class="sy3">&</span> x, <span class="kw4">const</span> counted_iterator<span class="sy1"><</span>I2<span class="sy1">></span><span class="sy3">&</span> y<span class="br0">)</span><span class="sy4">;</span>
|
|
|
|
<span class="kw1">template</span> <span class="sy1"><</span><span class="kw1">class</span> I1, <span class="kw1">class</span> I2<span class="sy1">></span>
|
|
requires Common<span class="sy1"><</span>I1, I2<span class="sy1">></span>
|
|
<span class="kw4">constexpr</span> difference_type_t<span class="sy1"><</span>I2<span class="sy1">></span> operator<span class="sy2">-</span><span class="br0">(</span>
|
|
<span class="kw4">const</span> counted_iterator<span class="sy1"><</span>I1<span class="sy1">></span><span class="sy3">&</span> x, <span class="kw4">const</span> counted_iterator<span class="sy1"><</span>I2<span class="sy1">></span><span class="sy3">&</span> y<span class="br0">)</span><span class="sy4">;</span>
|
|
<span class="kw1">template</span> <span class="sy1"><</span><span class="kw1">class</span> I<span class="sy1">></span>
|
|
<span class="kw4">constexpr</span> difference_type_t<span class="sy1"><</span>I<span class="sy1">></span> operator<span class="sy2">-</span><span class="br0">(</span>
|
|
<span class="kw4">const</span> counted_iterator<span class="sy1"><</span>I<span class="sy1">></span><span class="sy3">&</span> x, default_sentinel y<span class="br0">)</span><span class="sy4">;</span>
|
|
<span class="kw1">template</span> <span class="sy1"><</span><span class="kw1">class</span> I<span class="sy1">></span>
|
|
<span class="kw4">constexpr</span> difference_type_t<span class="sy1"><</span>I<span class="sy1">></span> operator<span class="sy2">-</span><span class="br0">(</span>
|
|
default_sentinel x, <span class="kw4">const</span> counted_iterator<span class="sy1"><</span>I<span class="sy1">></span><span class="sy3">&</span> y<span class="br0">)</span><span class="sy4">;</span>
|
|
<span class="kw1">template</span> <span class="sy1"><</span>RandomAccessIterator I<span class="sy1">></span>
|
|
<span class="kw4">constexpr</span> counted_iterator<span class="sy1"><</span>I<span class="sy1">></span>
|
|
operator<span class="sy2">+</span><span class="br0">(</span>difference_type_t<span class="sy1"><</span>I<span class="sy1">></span> n, <span class="kw4">const</span> counted_iterator<span class="sy1"><</span>I<span class="sy1">></span><span class="sy3">&</span> x<span class="br0">)</span><span class="sy4">;</span>
|
|
|
|
<span class="kw1">template</span> <span class="sy1"><</span>Iterator I<span class="sy1">></span>
|
|
<span class="kw4">constexpr</span> counted_iterator<span class="sy1"><</span>I<span class="sy1">></span> make_counted_iterator<span class="br0">(</span>I i, difference_type_t<span class="sy1"><</span>I<span class="sy1">></span> n<span class="br0">)</span><span class="sy4">;</span>
|
|
|
|
<span class="kw1">class</span> unreachable<span class="sy4">;</span>
|
|
<span class="kw1">template</span> <span class="sy1"><</span>Iterator I<span class="sy1">></span>
|
|
<span class="kw4">constexpr</span> <span class="kw4">bool</span> operator<span class="sy1">==</span><span class="br0">(</span><span class="kw4">const</span> I<span class="sy3">&</span>, unreachable<span class="br0">)</span> <span class="kw1">noexcept</span><span class="sy4">;</span>
|
|
<span class="kw1">template</span> <span class="sy1"><</span>Iterator I<span class="sy1">></span>
|
|
<span class="kw4">constexpr</span> <span class="kw4">bool</span> operator<span class="sy1">==</span><span class="br0">(</span>unreachable, <span class="kw4">const</span> I<span class="sy3">&</span><span class="br0">)</span> <span class="kw1">noexcept</span><span class="sy4">;</span>
|
|
<span class="kw1">template</span> <span class="sy1"><</span>Iterator I<span class="sy1">></span>
|
|
<span class="kw4">constexpr</span> <span class="kw4">bool</span> operator<span class="sy3">!</span><span class="sy1">=</span><span class="br0">(</span><span class="kw4">const</span> I<span class="sy3">&</span>, unreachable<span class="br0">)</span> <span class="kw1">noexcept</span><span class="sy4">;</span>
|
|
<span class="kw1">template</span> <span class="sy1"><</span>Iterator I<span class="sy1">></span>
|
|
<span class="kw4">constexpr</span> <span class="kw4">bool</span> operator<span class="sy3">!</span><span class="sy1">=</span><span class="br0">(</span>unreachable, <span class="kw4">const</span> I<span class="sy3">&</span><span class="br0">)</span> <span class="kw1">noexcept</span><span class="sy4">;</span>
|
|
|
|
<span class="kw1">template</span> <span class="sy1"><</span><span class="kw1">class</span> T<span class="sy1">></span> <span class="kw1">class</span> dangling<span class="sy4">;</span>
|
|
|
|
<span class="kw1">template</span> <span class="sy1"><</span><span class="kw1">class</span> T, <span class="kw1">class</span> charT <span class="sy1">=</span> <span class="kw4">char</span>, <span class="kw1">class</span> traits <span class="sy1">=</span> char_traits<span class="sy1"><</span>charT<span class="sy1">></span>,
|
|
<span class="kw1">class</span> Distance <span class="sy1">=</span> ptrdiff_t<span class="sy1">></span>
|
|
<span class="kw1">class</span> istream_iterator<span class="sy4">;</span>
|
|
|
|
<span class="kw1">template</span> <span class="sy1"><</span><span class="kw1">class</span> T, <span class="kw1">class</span> charT, <span class="kw1">class</span> traits, <span class="kw1">class</span> Distance<span class="sy1">></span>
|
|
<span class="kw4">bool</span> operator<span class="sy1">==</span><span class="br0">(</span><span class="kw4">const</span> istream_iterator<span class="sy1"><</span>T, charT, traits, Distance<span class="sy1">></span><span class="sy3">&</span> x,
|
|
<span class="kw4">const</span> istream_iterator<span class="sy1"><</span>T, charT, traits, Distance<span class="sy1">></span><span class="sy3">&</span> y<span class="br0">)</span><span class="sy4">;</span>
|
|
<span class="kw1">template</span> <span class="sy1"><</span><span class="kw1">class</span> T, <span class="kw1">class</span> charT, <span class="kw1">class</span> traits, <span class="kw1">class</span> Distance<span class="sy1">></span>
|
|
<span class="kw4">bool</span> operator<span class="sy1">==</span><span class="br0">(</span>default_sentinel x,
|
|
<span class="kw4">const</span> istream_iterator<span class="sy1"><</span>T, charT, traits, Distance<span class="sy1">></span><span class="sy3">&</span> y<span class="br0">)</span><span class="sy4">;</span>
|
|
<span class="kw1">template</span> <span class="sy1"><</span><span class="kw1">class</span> T, <span class="kw1">class</span> charT, <span class="kw1">class</span> traits, <span class="kw1">class</span> Distance<span class="sy1">></span>
|
|
<span class="kw4">bool</span> operator<span class="sy1">==</span><span class="br0">(</span><span class="kw4">const</span> istream_iterator<span class="sy1"><</span>T, charT, traits, Distance<span class="sy1">></span><span class="sy3">&</span> x,
|
|
default_sentinel y<span class="br0">)</span><span class="sy4">;</span>
|
|
<span class="kw1">template</span> <span class="sy1"><</span><span class="kw1">class</span> T, <span class="kw1">class</span> charT, <span class="kw1">class</span> traits, <span class="kw1">class</span> Distance<span class="sy1">></span>
|
|
<span class="kw4">bool</span> operator<span class="sy3">!</span><span class="sy1">=</span><span class="br0">(</span><span class="kw4">const</span> istream_iterator<span class="sy1"><</span>T, charT, traits, Distance<span class="sy1">></span><span class="sy3">&</span> x,
|
|
<span class="kw4">const</span> istream_iterator<span class="sy1"><</span>T, charT, traits, Distance<span class="sy1">></span><span class="sy3">&</span> y<span class="br0">)</span><span class="sy4">;</span>
|
|
<span class="kw1">template</span> <span class="sy1"><</span><span class="kw1">class</span> T, <span class="kw1">class</span> charT, <span class="kw1">class</span> traits, <span class="kw1">class</span> Distance<span class="sy1">></span>
|
|
<span class="kw4">bool</span> operator<span class="sy3">!</span><span class="sy1">=</span><span class="br0">(</span>default_sentinel x,
|
|
<span class="kw4">const</span> istream_iterator<span class="sy1"><</span>T, charT, traits, Distance<span class="sy1">></span><span class="sy3">&</span> y<span class="br0">)</span><span class="sy4">;</span>
|
|
<span class="kw1">template</span> <span class="sy1"><</span><span class="kw1">class</span> T, <span class="kw1">class</span> charT, <span class="kw1">class</span> traits, <span class="kw1">class</span> Distance<span class="sy1">></span>
|
|
<span class="kw4">bool</span> operator<span class="sy3">!</span><span class="sy1">=</span><span class="br0">(</span><span class="kw4">const</span> istream_iterator<span class="sy1"><</span>T, charT, traits, Distance<span class="sy1">></span><span class="sy3">&</span> x,
|
|
default_sentinel y<span class="br0">)</span><span class="sy4">;</span>
|
|
|
|
<span class="kw1">template</span> <span class="sy1"><</span><span class="kw1">class</span> T, <span class="kw1">class</span> charT <span class="sy1">=</span> <span class="kw4">char</span>, <span class="kw1">class</span> traits <span class="sy1">=</span> char_traits<span class="sy1"><</span>charT<span class="sy1">>></span>
|
|
<span class="kw1">class</span> ostream_iterator<span class="sy4">;</span>
|
|
|
|
<span class="kw1">template</span> <span class="sy1"><</span><span class="kw1">class</span> charT, <span class="kw1">class</span> traits <span class="sy1">=</span> char_traits<span class="sy1"><</span>charT<span class="sy1">></span> <span class="sy1">></span>
|
|
<span class="kw1">class</span> istreambuf_iterator<span class="sy4">;</span>
|
|
|
|
<span class="kw1">template</span> <span class="sy1"><</span><span class="kw1">class</span> charT, <span class="kw1">class</span> traits<span class="sy1">></span>
|
|
<span class="kw4">bool</span> operator<span class="sy1">==</span><span class="br0">(</span><span class="kw4">const</span> istreambuf_iterator<span class="sy1"><</span>charT, traits<span class="sy1">></span><span class="sy3">&</span> a,
|
|
<span class="kw4">const</span> istreambuf_iterator<span class="sy1"><</span>charT, traits<span class="sy1">></span><span class="sy3">&</span> b<span class="br0">)</span><span class="sy4">;</span>
|
|
<span class="kw1">template</span> <span class="sy1"><</span><span class="kw1">class</span> charT, <span class="kw1">class</span> traits<span class="sy1">></span>
|
|
<span class="kw4">bool</span> operator<span class="sy1">==</span><span class="br0">(</span>default_sentinel a,
|
|
<span class="kw4">const</span> istreambuf_iterator<span class="sy1"><</span>charT, traits<span class="sy1">></span><span class="sy3">&</span> b<span class="br0">)</span><span class="sy4">;</span>
|
|
<span class="kw1">template</span> <span class="sy1"><</span><span class="kw1">class</span> charT, <span class="kw1">class</span> traits<span class="sy1">></span>
|
|
<span class="kw4">bool</span> operator<span class="sy1">==</span><span class="br0">(</span><span class="kw4">const</span> istreambuf_iterator<span class="sy1"><</span>charT, traits<span class="sy1">></span><span class="sy3">&</span> a,
|
|
default_sentinel b<span class="br0">)</span><span class="sy4">;</span>
|
|
<span class="kw1">template</span> <span class="sy1"><</span><span class="kw1">class</span> charT, <span class="kw1">class</span> traits<span class="sy1">></span>
|
|
<span class="kw4">bool</span> operator<span class="sy3">!</span><span class="sy1">=</span><span class="br0">(</span><span class="kw4">const</span> istreambuf_iterator<span class="sy1"><</span>charT, traits<span class="sy1">></span><span class="sy3">&</span> a,
|
|
<span class="kw4">const</span> istreambuf_iterator<span class="sy1"><</span>charT, traits<span class="sy1">></span><span class="sy3">&</span> b<span class="br0">)</span><span class="sy4">;</span>
|
|
<span class="kw1">template</span> <span class="sy1"><</span><span class="kw1">class</span> charT, <span class="kw1">class</span> traits<span class="sy1">></span>
|
|
<span class="kw4">bool</span> operator<span class="sy3">!</span><span class="sy1">=</span><span class="br0">(</span>default_sentinel a,
|
|
<span class="kw4">const</span> istreambuf_iterator<span class="sy1"><</span>charT, traits<span class="sy1">></span><span class="sy3">&</span> b<span class="br0">)</span><span class="sy4">;</span>
|
|
<span class="kw1">template</span> <span class="sy1"><</span><span class="kw1">class</span> charT, <span class="kw1">class</span> traits<span class="sy1">></span>
|
|
<span class="kw4">bool</span> operator<span class="sy3">!</span><span class="sy1">=</span><span class="br0">(</span><span class="kw4">const</span> istreambuf_iterator<span class="sy1"><</span>charT, traits<span class="sy1">></span><span class="sy3">&</span> a,
|
|
default_sentinel b<span class="br0">)</span><span class="sy4">;</span>
|
|
|
|
<span class="kw1">template</span> <span class="sy1"><</span><span class="kw1">class</span> charT, <span class="kw1">class</span> traits <span class="sy1">=</span> char_traits<span class="sy1"><</span>charT<span class="sy1">></span> <span class="sy1">></span>
|
|
<span class="kw1">class</span> ostreambuf_iterator<span class="sy4">;</span>
|
|
|
|
<span class="br0">}</span><span class="br0">}</span><span class="br0">}</span><span class="br0">}</span>
|
|
|
|
<span class="kw1">namespace</span> std <span class="br0">{</span>
|
|
<span class="kw1">template</span> <span class="sy1"><</span>experimental<span class="sy4">::</span><a href="cpp-experimental-ranges-iterator-Iterator.html"><span class="kw2566">ranges::<span class="me2">Iterator</span></span></a> Out<span class="sy1">></span>
|
|
<span class="kw1">struct</span> iterator_traits<span class="sy1"><</span>Out<span class="sy1">></span><span class="sy4">;</span>
|
|
<span class="kw1">template</span> <span class="sy1"><</span>experimental<span class="sy4">::</span><a href="cpp-experimental-ranges-iterator-InputIterator.html"><span class="kw2569">ranges::<span class="me2">InputIterator</span></span></a> In<span class="sy1">></span>
|
|
<span class="kw1">struct</span> iterator_traits<span class="sy1"><</span>In<span class="sy1">></span><span class="sy4">;</span>
|
|
<span class="kw1">template</span> <span class="sy1"><</span>experimental<span class="sy4">::</span><a href="cpp-experimental-ranges-iterator-InputIterator.html"><span class="kw2569">ranges::<span class="me2">InputIterator</span></span></a> In<span class="sy1">></span>
|
|
requires experimental<span class="sy4">::</span><a href="cpp-experimental-ranges-iterator-Sentinel.html"><span class="kw2567">ranges::<span class="me2">Sentinel</span></span></a><span class="sy1"><</span>In, In<span class="sy1">></span>
|
|
<span class="kw1">struct</span> iterator_traits<span class="sy4">;</span>
|
|
<span class="br0">}</span></pre></div>
|
|
</div>
|
|
</div>
|
|
<div class="visualClear"></div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</body>
|
|
</html>
|