<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
  <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  <meta http-equiv="Content-Style-Type" content="text/css" />
  <meta name="generator" content="Microsoft FrontPage 5.0" />
  <title>Iterator Facade - </title>
  <style type="text/css">code{white-space: pre;}</style>
  <link href="data:text/css;charset=utf-8,body%0A%7B%0Afont%2Dfamily%3A%20arial%2C%20sans%2Dserif%3B%0Amax%2Dwidth%3A%206%2E5in%3B%0Amargin%3A%200px%20auto%3B%0Afont%2Dsize%3A%2085%25%3B%0A%7D%0Ains%20%7Bbackground%2Dcolor%3A%20%23CCFFCC%3B%20text%2Ddecoration%3A%20none%3B%7D%0Adel%20%7Bbackground%2Dcolor%3A%20%23FFCACA%3B%20text%2Ddecoration%3A%20none%3B%7D%0Apre%20%7Bbackground%2Dcolor%3A%20%23D7EEFF%3B%20font%2Dsize%3A%2095%25%3B%20font%2Dfamily%3A%20%22courier%20new%22%2C%20courier%2C%20serif%3B%7D%0Acode%20%7Bfont%2Dsize%3A%20110%25%3B%20font%2Dfamily%3A%20%22courier%20new%22%2C%20courier%2C%20serif%3B%7D%0Atable%20%7Bfont%2Dsize%3A%2090%25%3B%7D%0A%0A" rel="stylesheet" type="text/css" />
</head>
<body>
<table>
<tr>
  <td align="left">Doc. no.:</td>
  <td align="left">P0186R0</td>
</tr>
<tr>
  <td align="left">Date:</td>
  <td align="left">2016-02-11</td>
</tr>
<tr>
  <td align="left" valign="top">Reply to:</td>
  <td align="left">Beman Dawes &lt;bdawes at acm dot org&gt;</br>
  Eric Niebler &lt;eric dot niebler at gmail dot com&gt;</br>
  Casey Carter &lt;casey at carter dot net&gt;</td></tr>
<tr>
  <td align="left">Audience:</td>
  <td align="left">Library Evolution</td>
</tr>
</table>
<!-- generate-section-numbers=false -->
<h1 id="iterator-facade-library-proposal-for-ranges">Iterator Facade Library Proposal for Ranges</h1>
<p><em>&quot;We are what we pretend to be, so we must be careful about what we pretend to be.&quot; - Kurt Vonnegut</em></p>
<h2 id="summary">Summary</h2>
<p>Proposes a library component for easily creating conforming iterators. Based on existing practice. Depends only on the C++17 working paper plus Concepts TS and Ranges TS. Breaks no existing code or ABI's. Two open-source implementations including test suites available. Proposed wording provided.</p>
<h2 id="table-of-contents">Table of Contents</h2>
<!-- include "toc.html" --><a href="#iterator-facade-library-proposal-for-ranges">Iterator Facade Library Proposal for Ranges</a><br>
<a href="#summary">Summary</a><br>
<a href="#table-of-contents">Table of Contents</a><br>
<a href="#introduction">Introduction</a><br>
&nbsp;&nbsp;&nbsp;<a href="#problem">Problem</a><br>
&nbsp;&nbsp;&nbsp;<a href="#solution">Solution</a><br>
&nbsp;&nbsp;&nbsp;<a href="#proposal">Proposal</a><br>
&nbsp;&nbsp;&nbsp;<a href="#history">History</a><br>
<a href="#example">Example</a><br>
<a href="#design-decisions">Design Decisions</a><br>
&nbsp;&nbsp;&nbsp;<a href="#use-boost-iterator_facade-as-a-role-model">Use Boost <code>iterator_facade</code> as a role model</a><br>
&nbsp;&nbsp;&nbsp;<a href="#base-design-on-concepts-and-ranges">Base design on Concepts and Ranges</a><br>
&nbsp;&nbsp;&nbsp;<a href="#use-cursor-mixins-to-supply-details">Use Cursor mixins to supply details</a><br>
<a href="#proposed-wording">Proposed wording</a><br>
&nbsp;&nbsp;&nbsp;<a href="#basic-iterators-iterators.basic">24.8.9  Basic Iterators </a><br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#cursors-cursor.intro">24.8.9.1  Cursors </a><br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#namespace-cursor-synopsis-cursor.synopsis">24.8.9.1.1  Namespace cursor synopsis </a><br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#cursor-traits-cursor.traits">24.8.9.1.2  Cursor traits </a><br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#single_pass-cursor.single">24.8.9.1.2.1  <code>single_pass</code> </a><br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#contiguous-cursor.contig">24.8.9.1.2.2  <code>contiguous</code> </a><br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#types-cursor.types">24.8.9.1.2.3  Types </a><br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#concepts-cursor.concepts">24.8.9.1.3  Concepts </a><br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#class-template-basic_mixin-iterator.mixin">24.8.9.2  Class template <code>basic_mixin</code> </a><br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#constructors-mixin.cons">24.8.9.2.1  Constructors </a><br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#t-object-access-mixin.access">24.8.9.2.2  <code>T</code> object access </a><br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#class-template-basic_iterator-iterator.basic_iterator">24.8.9.3  Class template <code>basic_iterator</code> </a><br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#synopsis-basic_iterator.synopsis">24.8.9.3.1  Synopsis </a><br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#requirements-basic_iterator.require">24.8.9.3.2  Requirements </a><br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#constructors-assignments-and-moves-basic_iterator.cons">24.8.9.3.3  Constructors, assignments, and moves </a><br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#dereferences-basic_iterator.deref">24.8.9.3.4  Dereferences </a><br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#modifiers-basic_iterator.mods">24.8.9.3.5  Modifiers </a><br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="#basic_iterator-nonmember-functions-basic_iterator.nonmem">24.8.9.3.6  <code>basic_iterator</code> nonmember functions </a><br>
<a href="#open-questions">Open questions</a><br>
<a href="#acknowledgements">Acknowledgements</a><br>
<a href="#references">References</a><br><!-- end include -->
<h2 id="introduction">Introduction</h2>
<h3 id="problem">Problem</h3>
<p>Iterators that conform to the requirements of the C++ standard library are tedious to write and difficult to write correctly. They are tedious to write because although they need only a few core functions, they also need subsidiary types, functions, and other boilerplate. Conforming iterators are difficult to write correctly because each iterator category has a subtly differing set of requirements, making it all too easy to get subsidiary types, functions, or other boilerplate wrong.</p>
<h3 id="solution">Solution</h3>
<p>A class template that is given a few implementation functions can generate the facade (i.e. public interface and private implementation) for a fully conforming iterator, including all boilerplate. Boost <code>iterator_facade</code> pioneered this approach and has been in wide use since 2001<sup>[<a href="#1">1</a>]</sup>. It eases writing conforming iterators and has proven less error prone than hand-coded iterators. The generated iterator conforms to an extended set of requirements based on the C++98 iterator requirements. Others, such as Chandler Carruth's LLVM <code>iterator_facade_base</code><sup>[<a href="#2">2</a>]</sup>, have provided similar classes inspired by the Boost library.</p>
<h3 id="proposal">Proposal</h3>
<p>This paper proposes an iterator facade class template for the standard library, useful by any programmer (novice, experienced, or expert) wishing to easily create a conforming iterator. The proposal uses C++11/14/17 with concepts<sup>[<a href="#3">3</a>]</sup> and ranges<sup>[<a href="#4">4</a>]</sup> to allow straightforward specification and implementation, and to ensure that the generated iterator is actually conforming. The proposal breaks no existing code and breaks no existing ABI's. Two open-source implementations with test suites are available on GitHub<sup>[<a href="#5">5</a>][<a href="#6">6</a>]</sup>.</p>
<p>The proposal is suitable for C++17 if C++17 includes concepts and ranges. Otherwise, the proposal is suitable for the Ranges TS. No other core language or library changes are required.</p>
<h3 id="history">History</h3>
<p>A 2004 proposal<sup>[<a href="#7">7</a>]</sup> based on Boost <code>iterator_facade</code> failed because it depended on an iterator update proposal<sup>[<a href="#8">8</a>]</sup> that failed because without concepts the language was not rich enough to express the necessary iterator requirements.</p>
<h2 id="example">Example</h2>
<pre><!-- include "word_iterator.cpp" formatted snippet=word_iterator -->class cursor
{
  using string = std::string;
  const string* str_;        // nullptr if uninitialized
  string::size_type begin_;  // end iterator: begin_ == string::npos
  string word_;
  static constexpr const char* alpha =
    &quot;abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ&quot;;
 public:
  cursor() noexcept
    : str_(nullptr), begin_(string::npos), word_() {}
  cursor(const string&amp; str)
    : str_(&amp;str), begin_(0), word_() { next(); }
  const string&amp; read() const noexcept {
    assert(str_);                    // fails if uninitialized
    assert(begin_ != string::npos);  // fails on dereference end
    return word_;
  }
  bool equal(const cursor&amp; rhs) const noexcept
    { return begin_ == rhs.begin_; }
  void next() {
    assert(str_);                    // fails if uninitialized
    assert(begin_ != string::npos);  // fails on increment past end
    if ((begin_ += word_.size()) != string::npos
        &amp;&amp; (begin_ = str_-&gt;find_first_of(alpha, begin_)) != string::npos)
      word_.assign(*str_, begin_,
        str_-&gt;find_first_not_of(alpha, begin_) - begin_);
  }
};

using word_iterator = ranges::basic_iterator&lt;cursor&gt;;<!-- end include --></pre>
<p>The five member functions in class <code>cursor</code> result in generation of approximately eleven class <code>word_iterator</code> functions, as well supply in several useful iterator type-traits.</p>
<p>For a sample program that uses <code>word_iterator</code>, <a href="#basic-iterators-iterators.basic">see Basic Iterators, below</a>.</p>
<h2 id="design-decisions">Design Decisions</h2>
<h3 id="use-boost-iterator_facade-as-a-role-model">Use Boost <code>iterator_facade</code> as a role model</h3>
<p>This ensures that the proposal represents existing practice in widespread use.</p>
<h3 id="base-design-on-concepts-and-ranges">Base design on Concepts and Ranges</h3>
<p>This eliminates the difficulties with specification that bedeviled the 2004 proposal. It allows a concepts based interface specification that ensures the resulting iterator is actually conforming. It improves error message quality when the user makes a mistake. Using concepts based overloading eliminates the need for the implementation to perform complex template meta-programming.</p>
<h3 id="use-cursor-mixins-to-supply-details">Use Cursor mixins to supply details</h3>
<p>Cursor mixins have proven themselves useful time and again. That said, it's a curiously indirect way of defining an iterator's interface. The alternative of inheriting directly from the Cursor leads to interface pollution. Cursors are implementation details and they should stay hidden.</p>
<h2 id="proposed-wording">Proposed wording</h2>
<!-- generate-section-numbers -->
<p><span style="background-color:lightgrey"><em>Editorial comments are shown in italics with a light grey background.</em></span></p>
<p><span style="background-color:lightgrey"><em>Proposed wording is relative to the Working Draft, C++ Extensions for Ranges</em></span></p>
<p><span style="background-color:lightgrey"><em>Namespace qualification in the form <code>ranges::</code> is used as a placeholder pending a decision as to the final target for this proposal. If the target is the Ranges TS, <code>ranges::</code> will be replaced editorially by <code>std::experimental::ranges::</code>. If the target is the standard itself, <code>ranges::</code> will be replaced by <code>std::</code>, assuming the standard library itself does not introduce namespace versioning.</em></span></p>
<p><span style="background-color:lightgrey"><em>Add the following proposed wording as a new Iterator adapter at the end of 24.8 Iterator adaptors [iterators.predef]:</em></span></p>
<h3 id="basic-iterators-iterators.basic">24.8.9  Basic Iterators [iterators.basic]</h3>
<p>Class template <code>basic_iterator</code> (<a href="#class-template-basic_iterator-iterator.basic_iterator">iterator.basic_iterator</a>) is an iterator adaptor that iterates over a sequence provided by a cursor type. [<em>Note:</em> <code>basic_iterator</code> eases creation of conforming iterators because cursors are simpler to create than iterators. <em>-- end note</em>] Cursors are implementation details of a <code>basic_iterator</code> instantiation that are encapsulated as mixins so that they are hidden from users of the instantiation.</p>
<p>[<em>Example:</em></p>
<pre><!-- include "word_iterator.cpp" formatted snippet=word_iterator -->class cursor
{
  using string = std::string;
  const string* str_;        // nullptr if uninitialized
  string::size_type begin_;  // end iterator: begin_ == string::npos
  string word_;
  static constexpr const char* alpha =
    &quot;abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ&quot;;
 public:
  cursor() noexcept
    : str_(nullptr), begin_(string::npos), word_() {}
  cursor(const string&amp; str)
    : str_(&amp;str), begin_(0), word_() { next(); }
  const string&amp; read() const noexcept {
    assert(str_);                    // fails if uninitialized
    assert(begin_ != string::npos);  // fails on dereference end
    return word_;
  }
  bool equal(const cursor&amp; rhs) const noexcept
    { return begin_ == rhs.begin_; }
  void next() {
    assert(str_);                    // fails if uninitialized
    assert(begin_ != string::npos);  // fails on increment past end
    if ((begin_ += word_.size()) != string::npos
        &amp;&amp; (begin_ = str_-&gt;find_first_of(alpha, begin_)) != string::npos)
      word_.assign(*str_, begin_,
        str_-&gt;find_first_not_of(alpha, begin_) - begin_);
  }
};

using word_iterator = ranges::basic_iterator&lt;cursor&gt;;<!-- end include --></pre>
<p>Program using <code>word_iterator</code>:</p>
<pre><!-- include "word_iterator.cpp" formatted snippet=word_iterator_use -->int main()
{
  std::string s
    (&quot;now is 2016 the  time   when\nall good programmers should-party.&quot;);

  for (word_iterator it(s); it != word_iterator(); ++it)
    std::cout &lt;&lt; *it &lt;&lt; &quot; (&quot; &lt;&lt; it-&gt;size() &lt;&lt; &quot;)\n&quot;;
}<!-- end include --></pre>
<p>When executed, the output is:</p>
<blockquote>
<pre>now (3)
is (2)
the (3)
time (4)
when (4)
all (3)
good (4)
programmers (11)
should (6)
party (5)</pre>
</blockquote>
<p><em>-- end example</em>]</p>
<p>A cursor <code>C</code> may extend the interface of <code>basic_iterator&lt;C&gt;</code> by defining a nested mixin type <code>C::mixin</code>. In that way, the author of a cursor can non-intrusively add members and constructors to <code>basic_iterator</code>. If a cursor does not define a nested mixin type, a default mixin type will be provided.</p>
<blockquote>
<p>[<em>Note:</em> By publicly inheriting from a mixin type parameterized by the cursor type, <code>basic_iterator</code> gets access to the cursor object, and, optionally, additional members such as constructors. <em>-- end note</em>]</p>
</blockquote>
<p>This sub-clause has three major sub-sections:</p>
<ul>
<li><a href="#namespace-cursor">Namespace <code>cursor</code></a> describes cursor types.</li>
<li><a href="#iterator-mixin">Class template <code>basic_mixin</code></a> describes mixin types.</li>
<li><a href="#basic_iterator">Class template <code>basic_iterator</code></a> describes <code>basic_iterator</code>.</li>
</ul>
<h4 id="cursors-cursor.intro">24.8.9.1  Cursors [cursor.intro]</h4>
<p>Namespace <code>cursor</code> provides a scope for the type traits, concepts, and other traits needed to describe cursor types.</p>
<p>Which cursor concepts are satisfied by a user-supplied cursor type is determined by its members. The relationship between a cursor type's member, the cursor concept that requires it, and a summary of the cursor concept's requirement for the member are shown by the following table. The table is informational; actual requirements are specified by the concept descriptions that follow.</p>
<!-- include "mapping.html" snippet=table --><table border="1" cellpadding="5" cellspacing="0" style="border-collapse: collapse" bordercolor="#111111">
  <tr>
    <td align="center"><b><i>Member<br>
    name</i></b></td>
    <td align="center"><b><i>Required by<br>
    Concept</i></b></td>
    <td align="center"><i><b>Cursor member requirement summary</b></i></td>
  </tr>
  <tr>
    <td><code>read</code></td>
    <td><code>Readable&lt;C&gt;</code></td>
    <td><code>requires(const C&amp; c)
&nbsp; {{c.read()} -&gt; auto&amp;&amp;;
&nbsp;&nbsp;&nbsp; typename reference_t&lt;C&gt;;
&nbsp;&nbsp;&nbsp; typename value_type_t&lt;C&gt;;}</code></td>
  </tr>
  <tr>
    <td><code>arrow</code></td>
    <td><code>Arrow&lt;C&gt;</code></td>
    <td><code>requires(const C&amp; c)
     {{c.arrow()} -&gt; auto&amp;&amp;;}</code></td>
  </tr>
  <tr>
    <td><code>next</code></td>
    <td><code>Next&lt;C&gt;</code></td>
    <td><code>requires(C&amp; c) {c.next();}</code></td>
  </tr>
  <tr>
    <td><code>prev</code></td>
    <td><code>Prev&lt;C&gt;</code></td>
    <td><code>requires(C&amp; c) {c.prev();}</code></td>
  </tr>
  <tr>
    <td><code>indirect_move</code></td>
    <td><code>IndirectMove&lt;C&gt;</code></td>
    <td><code>requires(const C&amp; c)
     {c.indirect_move();}</code></td>
  </tr>
  <tr>
    <td><code>indirect_swap</code></td>
    <td><code>IndirectSwap&lt;C1,
 C2&gt;</code></td>
    <td><code>requires(const C1&amp; c1, const C2&amp; c2)</code>
    <code>&nbsp; {c1.indirect_swap(c2);
&nbsp;&nbsp; c2.indirect_swap(c1);}</code></td>
  </tr>
  <tr>
    <td><code>advance</code></td>
    <td><code>Advance&lt;C&gt;</code></td>
    <td><code>requires(C&amp; c, difference_type_t&lt;C&gt; n)
&nbsp; {c.advance(n);}</code></td>
  </tr>
  <tr>
    <td><code>write</code></td>
    <td><code>Writable&lt;C, T&gt;</code></td>
    <td><code>requires(C&amp; c, T&amp;&amp; t)
&nbsp; {c.write(range::forward&lt;T&gt;(t));}</code></td>
  </tr>
  <tr>
    <td><code>distance_to</code></td>
    <td><code>SizedSentinel&lt;S,
 C&gt;</code></td>
    <td><code>requires(const C&amp; c, const S&amp; s)
&nbsp; {{c.distance_to(s)} -&gt;
    Same&lt;difference_type_t&lt;C&gt;;}</code></td>
  </tr>
  <tr>
    <td><code>equal</code></td>
    <td><code>Sentinel&lt;S, C&gt;</code></td>
    <td><code>requires(const C&amp; c, const S&amp; s)
&nbsp; {{c.equal(s)}-&gt;bool;}</code></td>
  </tr>
  <tr>
    <td><code>single_pass::value</code></td>
    <td><code>Forward&lt;C&gt;</code></td>
    <td><code>bool single_pass::value&nbsp; </code><br>default: <code>=false</code></td>
  </tr>
  <tr>
    <td><code>contiguous::value</code></td>
    <td><code>Contiguous&lt;C&gt;</code></td>
    <td><code>is_reference&lt;reference_t&lt;C&gt;&gt;::value </code><br>default: <code>=false</code></td>
  </tr>
  <tr>
    <td><code>mixin</code></td>
    <td><code>Cursor&lt;C&gt;</code></td>
    <td><code>type mixin&nbsp; </code><br>default: <code>=basic_mixin&lt;C&gt;</code></td>
  </tr>
  <tr>
    <td><code>value_type</code></td>
    <td><code>Readable&lt;C&gt;</code></td>
    <td><code>type value_type&nbsp; </code><br>default: <code>=decay_t&lt;reference_t&lt;C&gt;&gt;</code></td>
  </tr>
  </table><!-- end include -->
<p>Cursor members shown with defaults are only required if the default is not appropriate.</p>
<p>The following figure shows the relationship between cursor related concepts. The figure is informational; actual relationships are specified by the concepts descriptions that follow.</p>
<p><img src="data:image/png;base64,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bt26H374QXQKqM6cOXNatmzZqVMn0UEQnKKjo4cMGRIWxrwkaNs333zTrl27oqKimJgY0Vl8cvTo0eTk5AULFqSnp4vOAvyH1WqdNm3axIkTJ02aNGrUKIYWAASYGgs84MhqtTZq1GjDhg3x8fGiswCAemVmZtarV2/GjBmigyhg8+bNWVlZhYWF7dq1E50FuE1JSUlmZmarVq3mz59fv3590XEAhBDGmqANR44cqaioYLoaAEgoLCzctm3b22+/LTqIMp588smJEyf27t373LlzorMAt2nfvv3BgwfvvPNOg8Gwc+dO0XEAhBAKPLShsLAwOTk5PDxcdBAAUKmbN2+OHj36jTfeqFevnugsihk9enT37t379+9//fp10VmA29SuXTsnJ+fPf/5z7969zWbzzZs3RScCEBIo8NCGwsLCzp07i04BAOo1Z86cW7duvfTSS6KDKGzatGnVqlV78cUXRQcBnDAajZ9++un69evT0tJOnz4tOg6A4EeBhwZYrdaCggIKPAC4cuHChQkTJvz9738PvplKkZGRubm5e/funTp1qugsgBMPP/xwUVHRo48+ajAY8vLyRMcBEORYxA4acPTo0cTExAsXLkRERIjOAgBqNGrUqNOnT69atUp0EH85duxYcnLyP/7xj969e4vOAji3fv36559/fvDgwVOmTKlevbroOACCEyPw0IAdO3YkJyfT3gHAqcOHD3/00Ud///vfRQfxo5YtWy5duvSZZ5757LPPRGcBnOvdu3dpaWlZWVlSUtLx48dFxwEQnCjw0ABugAcACaNHjzaZTPfee6/oIP7VrVu3N998k0XpoWb33HPP9u3bMzIyEhISFi5cKDoOgCDEFHpoQNOmTdesWZOYmCg6CACozpo1a8aMGXPkyJHo6GjRWQJh5MiRhw4d2r59O1OUoWY7duzIzs5+4oknZsyYUatWLdFxAAQPRuChdseOHbty5UpcXJzoIACgOr/99tvLL7/8l7/8JUTau06nmzZtWnR09PDhw0UHAaR06dKlrKzs0qVLcXFxpaWlouMACB4UeKhd5TfAcwM8ADj661//2qxZs6ysLNFBAiciIiI3N3ffvn3vvPOO6CyAlLvuumv9+vUjR47s0qWLxWJh0isARTCFHmo3ZMiQdu3ajR8/XnQQAFCXb7/9NiYmZufOnbGxsaKzBFrlovTz5s17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osRdxtXX16urq5NO0WusxTMftWu3nbDugbkcVE/bCCRGt72x3QO6vgMr8blrw/ZmFvSW+PxAgRUKeOBTbGysra0tPiIBeHT48OEdO3aQTiFglZWVwcHB169fHzp06Lp161xdXRUUFEiHknVv374NDQ39448/Xr16NXv27IULF86fP19VVZV0Lp4oKirq6+uTTsEPrpe5PA5QF+oeertZX+C6X6bgno6Q8PfGcrj71qud8B0AhA0FPPApLi5u/vz5pFMASAwVFRUVFRXSKQSDTqeHh4efPn06OTl57dq1ERERFhYWpEPB/xszZszMmTO///77ysrKyMjIkJCQffv2WVhYODk5rVixYty4caQDgsRgWwbwckGPK34AAOHBGHjgB2MAPFaAB5A1DQ0NPj4+xsbG27Zts7Ozy8vL8/X1RfUunjQ0NNzd3cPCwkpKSjw8PNLS0qZMmWJqaurt7Z2Tk0M6neRhDh0nHUQaCHsQPogPuf+i8Duou9tOevoqj19i+zwvR6HwMCEl59fL4RCsu2I7lIaXGLyMI+AxBoghtMADP548eSIvL29mZkY6CACISHZ29unTp4ODg6dPn37kyJHly5f369ePdCjgibq6uru7u7u7e1NT0927d0NCQqysrDQ1NR0dHV1cXKytrXEBxyNhFJzMa3HxrGZZUwkkp3i+WBA41l9s/qp3Dt1Aun1Vjt00EKx7YO1dwvkolC638Ho6dE/PcNiAjz98XmKA1EMLPPADK8ADyIj29vaQkBB7e3srKysKhRIXFxcdHe3i4oLqXRINHDjQyckpICCgqKjo8OHDxcXFixYtMjEx2b9//6NHj3AJSAT9H6SDAAgY28KSvxHdvB+C7V8TL6s88DF/RLfdcn29Pd1H4OW4vMcAWYAWeOAHVoAHkHqVlZX+/v5+fn50Op1Kpd68eVNNTY10KBAMNTU1V1dXV1fXpqamqKio0NBQOzu7wYMHOzk5LV++fM6cOUpKSqQzAoB0krXbVWL7esU2GHCFFnjotc7OztjYWBTwANIqIyPD3d1dX18/MTHR19f35cuXVCoV1btUGjhw4IoVK37++efq6upbt25pampSqdQhQ4bY29v7+PiUlpaSDggAYq1bd26hHkXYY7ZFcBQ5FsI4igBh7g/xhAIeei07O1teXn7SpEmkgwCAINFotICAAEtLywULFujo6GRl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X7x4sWPHjp07d75+/fo///lPaGiogT+u1dzcXPyoP8knDQ0NWVlZKSkpaWlpqampsbGxaWlpdXV13bp169u3rzil79WrV8+ePZs3b04wchCmkpKSmJiY48ePnzlzxsXFZerUqQcOHIiPj9+0aVO3bt3WrFkzYMCAn376ycPDw9/f/9atW7179yYdMgA1atQoPIVenxnUFXix6OjoJUuWXLlyRQiP4QXg7vPPP8/Pz9+5cyfpQIBPtbW1AQEBOTk5p0+f7tixI+lwgDdNTU3nzp0LCws7cuRI3759/f39p06dyuN+58qVK5s3b46JiRk/fnxwcPC4ceOMjY35qly/iUSi7OzstLS0lJSUhw8finP76upqZ2dncTIvTux79uyJJ+QZrPT09BMnThw/fvz69etvvfWWeP0tLi7+6aef/v777+nTpwcHBzc1Nf34448nTpyYNWvW2rVrcVQJwlFTU2NlZZWRkdG5c2faArgCDzrG39//0aNHEydOvH79uvoDFwG0xtfXd/LkyU1NTThM1xuVlZVTpkx5/fr1+fPn27ZtSzoc4MfDhw/DwsLCw8PNzMzmzZuXnJzM41ny2traQ4cOhYaGJicnv/POOzdu3OjXrx9flRsIIyOjrl27du3adeLEiZIP8/LyxJfoU1NT//jjj5SUlPLy8q5du0qu0vfu3btnz554lZ0eKysrO3v27JkzZ86cOfP8+fOxY8fOmzcvKiqqffv2sbGxK1asuHTp0ty5c2/cuHHnzp2goKDc3NwVK1Zs2bIFB5MgNC1atHjjjTeuXr369ttv0xbAFXjdZoBX4MWWLl2alpYWFxeHIXOgK5qamuzt7Y8dOzZkyBDSsQAPysvL/fz8WrRoER0dreajy0AIampq9u3bFxoa+vDhw5kzZ86fP3/EiBE8Pg49NTU1NDQ0PDy8a9euQUFBs2fPxhMxNKqoqEh8if7BgwfiC/XFxcVdunTp1auXOJkX/4tTbzqtsbExMTHxzJkzp0+fvnnzZq9evby9vb28vEaOHGlublQ2JnIAACAASURBVF5cXLxr164///zT2Nh46dKlc+bMOXz48ObNm83MzD755JO3334bx5AgWKtWraIo6ueff6b9Fgm8bjPYBL6+vn7ChAmOjo67d+8mHQsAV++++27nzp2/+uor0oGAuoqLiydMmODs7BwREYGHaem67Ozs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" alt="Oops!" style="width:100%;"></p>
<h5 id="namespace-cursor-synopsis-cursor.synopsis">24.8.9.1.1  Namespace cursor synopsis [cursor.synopsis]</h5>
<pre><code>namespace std {
namespace experimental {
namespace ranges {
inline namespace v1 {
  namespace cursor {
    
    // Cursor traits 

    // single_pass trait
    template &lt;class&gt; constexpr bool single_pass = false;
    template &lt;class C&gt;
      requires requires {
        typename C::single_pass;
        requires bool(C::single_pass::value);
      }
    constexpr bool single_pass = true;

    // contiguous trait 
    template &lt;class&gt; constexpr bool contiguous = false;
    template &lt;class C&gt;
      requires requires {
        typename C::contiguous;
        requires bool(C::contiguous::value);
      }
    constexpr bool contiguous = true;

    // category trait
    template &lt;class&gt;
      struct category {};
    template &lt;Input C&gt;
      struct category&lt;C&gt; { using type = input_iterator_tag; };
    template &lt;Forward C&gt;
      struct category&lt;C&gt; { using type = forward_iterator_tag; };
    template &lt;Bidirectional C&gt;
      struct category&lt;C&gt; { using type = bidirectional_iterator_tag; };
    template &lt;RandomAccess C&gt;
      struct category&lt;C&gt; { using type = random_access_iterator_tag; };
    template &lt;Contiguous C&gt;
      struct category&lt;C&gt; { using type = ext::contiguous_iterator_tag; };
    template &lt;class C&gt;
      using category_t = typename category&lt;C&gt;::type;

    // types
    template &lt;class C&gt;
      using mixin_t = <em>see below</em>;
    template &lt;class C&gt;
      requires <em>see below</em>
      using value_type_t = <em>see below</em>;
    template &lt;class C&gt;
      using difference_type_t = <em>see below</em>;
    template &lt;class C&gt;
      requires
        requires(const C&amp; c) {{c.read()} -&gt; auto&amp;&amp;;}
      using reference_t = <em>see below</em>;
      
    // concepts
    template &lt;class C&gt;
      concept bool Cursor();
    template &lt;class C&gt;
      concept bool Readable();
    template &lt;class C&gt;
      concept bool Arrow();
    template &lt;class C, class T&gt;
      concept bool Writable();
    template &lt;class S, class C&gt;
      concept bool Sentinel();
    template &lt;class S, class C&gt;
      concept bool SizedSentinel();
    template &lt;class C&gt;
      concept bool Next();
    template &lt;class C&gt;
      concept bool Prev();
    template &lt;class C&gt;
      concept bool Advance();
    template &lt;class C&gt;
      concept bool IndirectMove();
    template &lt;class C, class O&gt;
      concept bool IndirectSwap();    
    template &lt;class C&gt;
      concept bool Input();
    template &lt;class C&gt;
      concept bool Forward();
    template &lt;class C&gt;
      concept bool Bidirectional();
    template &lt;class C&gt;
      concept bool RandomAccess();
    template &lt;class C&gt;
      concept bool Contiguous();
}}}}}</code></pre>
<h5 id="cursor-traits-cursor.traits">24.8.9.1.2  Cursor traits [cursor.traits]</h5>
<h6 id="single_pass-cursor.single">24.8.9.1.2.1  <code>single_pass</code> [cursor.single]</h6>
<pre><code>template &lt;class&gt; constexpr bool single_pass = false;
template &lt;class C&gt;
  requires requires {
    typename C::single_pass;
    requires bool(C::single_pass::value);
  }
constexpr bool single_pass = true;</code></pre>
<p><code>using single_pass = stl::true_type;</code> is defined by a cursor to specify to <code>basic_iterator</code> that the cursor does not satisfy the <code>cursor::ForwardIterator</code> concept despited satisfying the <code>cursor::InputIterator</code> and <code>cursor::EqualityComparable</code> concepts.</p>
<h6 id="contiguous-cursor.contig">24.8.9.1.2.2  <code>contiguous</code> [cursor.contig]</h6>
<pre><code>template &lt;class&gt; constexpr bool contiguous = false;
template &lt;class C&gt;
  requires requires {
    typename C::contiguous;
    requires bool(C::contiguous::value);
  }
constexpr bool contiguous = true;</code></pre>
<p><code>using contiguous = stl::true_type;</code> is defined by a cursor to specify to <code>basic_iterator</code> that the cursor satisfies the <code>cursor::Contiguous</code> concept if it also satisfies the <code>cursor::RandomAccess</code> concept.</p>
<h6 id="types-cursor.types">24.8.9.1.2.3  Types [cursor.types]</h6>
<p>These type traits are used in cursor concepts, traits, and in class basic_iterator to access types defined by cursors or deduced from the presence of cursor functions.</p>
<pre><code>template &lt;class C&gt;
  using mixin_t = <em>see below</em>;  // used by concepts, etc</code></pre>
<p>Type <code>mixin_t</code> is defined as <code>C::mixin</code> if type <code>C::mixin</code> is defined. Otherwise it is defined as <code>basic_mixin&lt;C&gt;</code>.</p>
<pre><code>template &lt;class C&gt;
  requires <em>see below</em>
  using value_type_t = <em>see below</em>; // used by concepts, etc.</code></pre>
<p>The <code>requires</code> clause is satisfied if and only if <code>Same&lt;deduced_value_t&lt;C&gt;::type, decay_t&lt;deduced_value_t&lt;C&gt;::type&gt;&gt;()</code> would be satisfied.</p>
<p>Type <code>value_type_t</code> is defined as <code>deduced_value_t&lt;C&gt;::type</code>.</p>
<p><em>Remarks:</em> <code>template &lt;class C&gt; deduced_value_t;</code> is an exposition only type defined as:</p>
<ul>
<li><code>struct value_type&lt;C&gt; {using type = typename C::value_type;};</code> if <code>C</code> has a member <code>value_type</code>,</li>
<li>Otherwise <code>struct value_type&lt;C&gt; {using type = decay_t&lt;reference_t&lt;C&gt;&gt;;};</code> if <code>C</code> does not have a member <code>value_type</code> and satisfies a requirement for <code>reference_t&lt;C&gt;</code>.</li>
<li>Otherwise <code>struct deduced_value_t {};</code>.</li>
</ul>
<pre><code>template &lt;class C&gt;
  using difference_type_t = <em>see below</em>; // used by concepts, etc.</code></pre>
<p>Type <code>difference_type_t</code> is defined as:</p>
<ul>
<li><code>C::difference_type</code> if <code>C</code> has a member <code>difference_type</code>,</li>
<li>Otherwise <code>decltype(declval&lt;const C&amp;&gt;().distance_to(declval&lt;const C&amp;&gt;()))</code> if <code>C</code> has such a <code>distance_to</code> member function,</li>
<li>Otherwise <code>std::ptrdiff_t</code>.</li>
</ul>
<pre><code>template &lt;class C&gt;
  requires
    requires(const C&amp; c) {{c.read()} -&gt; auto&amp;&amp;;}
  using reference_t = <em>see below</em>;  // used by traits, etc.</code></pre>
<p>Type <code>reference_t</code> is defined as <code>decltype(declval&lt;const C&amp;&gt;().read())</code>.</p>
<h5 id="concepts-cursor.concepts">24.8.9.1.3  Concepts [cursor.concepts]</h5>
<pre><code>template &lt;class C&gt;
  concept bool Cursor();</code></pre>
<blockquote>
<p><em>Returns:</em> <code>Semiregular&lt;remove_cv_t&lt;C&gt;&gt;()</code><br />
 <code>&amp;&amp; Semiregular&lt;mixin_t&lt;remove_cv_t&lt;C&gt;&gt;&gt;()</code><br />
 <code>&amp;&amp; requires {typename difference_type_t&lt;C&gt;;}</code>.</p>
</blockquote>
<pre><code>template &lt;class C&gt;
  concept bool Readable();</code></pre>
<blockquote>
<p><em>Returns:</em> <code>Cursor&lt;C&gt;() &amp;&amp; requires(const C&amp; c) {</code><br />
     <code>{c.read()} -&gt; auto&amp;&amp;;</code><br />
     <code>typename reference_t&lt;C&gt;;</code><br />
     <code>typename value_type_t&lt;C&gt;;</code><br />
 <code>}</code>.</p>
</blockquote>
<pre><code>template &lt;class C&gt;
  concept bool Arrow();</code></pre>
<blockquote>
<p><em>Returns:</em> <code>Readable&lt;C&gt;()</code><br />
 <code>&amp;&amp; requires(const C&amp; c) {{c.arrow()} -&gt; auto&amp;&amp;;}</code>.</p>
</blockquote>
<pre><code>template &lt;class C, class T&gt;
  concept bool Writable();</code></pre>
<blockquote>
<p><em>Returns:</em> <code>Cursor&lt;C&gt;()</code><br />
 <code>&amp;&amp; requires(C&amp; c, T&amp;&amp; t) {c.write(ranges::forward&lt;T&gt;(t));}</code>.</p>
</blockquote>
<blockquote>
<p><em>Remarks:</em> Not required to be equality-preserving.</p>
</blockquote>
<pre><code>template &lt;class S, class C&gt;
  concept bool Sentinel();</code></pre>
<blockquote>
<p><em>Returns:</em> <code>Cursor&lt;C&gt;() &amp;&amp; Semiregular&lt;S&gt;()</code><br />
 <code>&amp;&amp; requires(const C&amp; c, const S&amp; s) {{c.equal(s)} -&gt; bool;}</code>.</p>
</blockquote>
<pre><code>template &lt;class S, class C&gt;
concept bool SizedSentinel();</code></pre>
<blockquote>
<p><em>Returns:</em> <code>Sentinel&lt;S, C&gt;()&amp;&amp; requires(const C&amp; c, const S&amp; s)</code><br />
 <code>{{c.distance_to(s)} -&gt; Same&lt;difference_type_t&lt;C&gt;;}</code>.</p>
</blockquote>
<pre><code>template &lt;class C&gt;
  concept bool Next();</code></pre>
<blockquote>
<p><em>Returns:</em> <code>Cursor&lt;C&gt;() &amp;&amp; requires(C&amp; c) {c.next();}</code>.</p>
</blockquote>
<pre><code>template &lt;class C&gt;
  concept bool Prev();</code></pre>
<blockquote>
<p><em>Returns:</em> <code>Cursor&lt;C&gt;() &amp;&amp; requires(C&amp; c) {c.prev();}</code>.</p>
</blockquote>
<pre><code>template &lt;class C&gt;
  concept bool Advance();</code></pre>
<blockquote>
<p><em>Returns:</em> <code>Cursor&lt;C&gt;()</code><br />
 <code>&amp;&amp; requires(C&amp; c, difference_type_t&lt;C&gt; n) {c.advance(n);}</code>.</p>
</blockquote>
<pre><code>template &lt;class C&gt;
concept bool IndirectMove();</code></pre>
<blockquote>
<p><em>Returns:</em> <code>Readable&lt;C&gt;()</code><br />
 <code>&amp;&amp; requires(const C&amp; c) {c.indirect_move()} -&gt; auto&amp;&amp;;};</code>.</p>
</blockquote>
<pre><code>template &lt;class C1, class C2&gt;
concept bool IndirectSwap();</code></pre>
<blockquote>
<p><em>Returns:</em> <code>Readable&lt;C1&gt;() &amp;&amp; Readable&lt;C2&gt;()</code><br />
 <code>&amp;&amp; requires(const C1&amp; c1, const C2&amp; c2)</code><br />
 <code>{c1.indirect_swap(c2); c2.indirect_swap(c1);}</code>.</p>
</blockquote>
<blockquote>
<p><em>Axiom:</em> If <code>c1.read() == x</code> and <code>c2.read() == y</code> then after either <code>c1.indirect_swap(c2)</code> or <code>c2.indirect_swap(c1)</code>, <code>c1.read() == y</code> and <code>c2.read() == x</code>. No diagnostic required.</p>
</blockquote>
<pre><code>template &lt;class C&gt;
  concept bool Input();</code></pre>
<blockquote>
<p><em>Returns:</em> <code>Readable&lt;C&gt;() &amp;&amp; Next&lt;C&gt;()</code>.</p>
</blockquote>
<pre><code>template &lt;class C&gt;
  concept bool Forward();</code></pre>
<blockquote>
<p><em>Returns:</em> <code>Input&lt;C&gt;() &amp;&amp; Sentinel&lt;C, C&gt;() &amp;&amp; !single_pass&lt;C&gt;</code>.</p>
</blockquote>
<pre><code>template &lt;class C&gt;
  concept bool Bidirectional();</code></pre>
<blockquote>
<p><em>Returns:</em> <code>Forward&lt;C&gt;() &amp;&amp; Prev&lt;C&gt;()</code>.</p>
</blockquote>
<pre><code>template &lt;class C&gt;
  concept bool RandomAccess();</code></pre>
<blockquote>
<p><em>Returns:</em> <code>Bidirectional&lt;C&gt;()</code><br />
 <code>&amp;&amp; Advance&lt;C&gt;() &amp;&amp; SizedSentinel&lt;C, C&gt;()</code>.</p>
</blockquote>
<pre><code>template &lt;class C&gt;
  concept bool Contiguous();</code></pre>
<blockquote>
<p><em>Returns:</em> <code>RandomAccess&lt;C&gt;() &amp;&amp; contiguous&lt;C&gt;</code><br />
 <code>&amp;&amp; is_reference&lt;reference_t&lt;C&gt;&gt;::value</code>.</p>
</blockquote>
<p><span style="background-color:lightgrey"><em>Add to 24.6, Header <code>&lt;experimental/ranges/iterator&gt;</code> synopsis [iterator.synopsis]:</em></span></p>
<pre><code>  // basic_mixin
  template &lt;Destructible T&gt;
  class basic_mixin;</code></pre>
<p><span style="background-color:lightgrey"><em>Continue to add to Basic Iterators [iterators.basic]:</em></span></p>
<h4 id="class-template-basic_mixin-iterator.mixin">24.8.9.2  Class template <code>basic_mixin</code> [iterator.mixin]</h4>
<p>Class template <code>basic_mixin</code> describes a mixin type.</p>
<p>Class <code>basic_mixin</code> inherits from template parameter <code>T</code> or from an implementation-supplied base class that inherits from template parameter <code>T</code>.</p>
<p>[<em>Note:</em> Permitting an implementation-supplied base class gives an implementation latitude to perform empty base optimization if it so chooses. <em>-- end note</em>]</p>
<pre><code>  template &lt;Destructible T&gt;
  class basic_mixin : protected <em>see below</em> {
  public:
    // constructors 
    constexpr basic_mixin()
      noexcept(is_nothrow_default_constructible&lt;T&gt;::value)
      requires DefaultConstructible&lt;T&gt;();
    constexpr basic_mixin(const T&amp; t)
      noexcept(is_nothrow_copy_constructible&lt;T&gt;::value)
      requires CopyConstructible&lt;T&gt;();
    constexpr basic_mixin(T&amp;&amp; t)
      noexcept(is_nothrow_move_constructible&lt;T&gt;::value)
      requires MoveConstructible&lt;T&gt;();

    // T object access
    constexpr T&amp; get() &amp; noexcept;
    constexpr const T&amp; get() const&amp; noexcept;
    constexpr T&amp;&amp; get() &amp;&amp; noexcept;
    constexpr const T&amp;&amp; get() const&amp;&amp; noexcept;
  };</code></pre>
<h5 id="constructors-mixin.cons">24.8.9.2.1  Constructors [mixin.cons]</h5>
<pre><code>constexpr basic_mixin()
  noexcept(is_nothrow_default_constructible&lt;T&gt;::value)
  requires DefaultConstructible&lt;T&gt;();</code></pre>
<blockquote>
<p><em>Effects:</em> Default constructs an object of class <code>basic_mixin</code>.</p>
</blockquote>
<blockquote>
<p><em>Postconditions:</em> <code>get()</code> returns a reference to a default constructed object or sub-object of type <code>T</code>.</p>
</blockquote>
<pre><code>constexpr basic_mixin(const T&amp; t)
  noexcept(is_nothrow_copy_constructible&lt;T&gt;::value)
  requires CopyConstructible&lt;T&gt;();</code></pre>
<blockquote>
<p><em>Effects:</em> Copy constructs an object of type <code>basic_mixin</code>.</p>
</blockquote>
<blockquote>
<p><em>Postconditions:</em> <code>get()</code> returns a reference to a copy constructed object or sub-object of type <code>T</code> with same state as <code>t</code>.</p>
</blockquote>
<pre><code>constexpr basic_mixin(T&amp;&amp; t)
  noexcept(is_nothrow_move_constructible&lt;T&gt;::value)
  requires MoveConstructible&lt;T&gt;();</code></pre>
<blockquote>
<p><em>Effects:</em> Move constructs an object of type <code>basic_mixin</code>.</p>
</blockquote>
<blockquote>
<p><em>Postconditions:</em> <code>get()</code> returns a reference to a move constructed object or sub-object of type <code>T</code> with the state of <code>ranges::move(t)</code>.</p>
</blockquote>
<h5 id="t-object-access-mixin.access">24.8.9.2.2  <code>T</code> object access [mixin.access]</h5>
<p>The <code>get</code> member functions are permitted return a reference to either an object or a sub-object. [<em>Note:</em> This allows an implementation to return a reference to either a data member of type T or <code>*this</code> respectively, depending on implementation details. -- <em>end note</em>]</p>
<pre><code>constexpr T&amp; get() &amp; noexcept;
constexpr const T&amp; get() const&amp; noexcept;</code></pre>
<blockquote>
<p><em>Returns:</em> A reference to the object or sub-object of type T created when <code>*this</code> was constructed.</p>
</blockquote>
<pre><code>constexpr T&amp;&amp; get() &amp;&amp; noexcept;
constexpr const T&amp;&amp; get() const&amp;&amp; noexcept;</code></pre>
<blockquote>
<p><em>Returns:</em> <code>std::move(x)</code>, where <code>x</code> is a reference to the object or sub-object of type T created when <code>*this</code> was constructed..</p>
</blockquote>
<p><span style="background-color:lightgrey"><em>Continue to add to Basic Iterators [iterators.basic]:</em></span></p>
<h4 id="class-template-basic_iterator-iterator.basic_iterator">24.8.9.3  Class template <code>basic_iterator</code> [iterator.basic_iterator]</h4>
<p>Class template <code>basic_iterator</code> describes an iterator over a sequence. A <code>basic_iterator</code> instantiation satisfies concept <code>ranges::Iterator</code>. Which of the other iterator concepts will be satisfied is determined by which cursor concepts are satisfied by the <code>basic_iterator</code> template parameter <code>C</code>.</p>
<h5 id="synopsis-basic_iterator.synopsis">24.8.9.3.1  Synopsis [basic_iterator.synopsis]</h5>
<pre><code>namespace std {
namespace experimental {
namespace ranges {
inline namespace v1 {
  
  template &lt;Cursor C&gt;  
  class basic_iterator
    : public mixin_t&lt;C&gt;
  {
  private:
    // all private members for exposition only 
    using mixin = mixin_t&lt;C&gt;;
    using mixin::get;

    using assoc_t = <em>see below</em>;
    using typename assoc_t::postfix_increment_result_t;
    using typename assoc_t::reference_t;
    using typename assoc_t::const_reference_t;

    using difference_type = cursor::difference_type_t&lt;C&gt;;
  public:
 
    // constructors, assignments, moves, swaps
    basic_iterator() = default;

    using mixin::mixin;

    template &lt;ConvertibleTo&lt;C&gt; O&gt;
      constexpr basic_iterator(basic_iterator&lt;O&gt;&amp;&amp; that)
        noexcept(is_nothrow_constructible&lt;mixin, O&amp;&amp;&gt;::value);
    template &lt;ConvertibleTo&lt;C&gt; O&gt;
      constexpr basic_iterator(const basic_iterator&lt;O&gt;&amp; that)
        noexcept(is_nothrow_constructible&lt;mixin, const O&amp;&gt;::value);

    template &lt;ConvertibleTo&lt;C&gt; O&gt;
      constexpr basic_iterator&amp; operator=(basic_iterator&lt;O&gt;&amp;&amp; that) &amp;
        noexcept(is_nothrow_assignable&lt;C&amp;, O&amp;&amp;&gt;::value);
    template &lt;ConvertibleTo&lt;C&gt; O&gt;
      constexpr basic_iterator&amp; operator=(const basic_iterator&lt;O&gt;&amp; that) &amp;
        noexcept(is_nothrow_assignable&lt;C&amp;, const O&amp;&gt;::value);

    template &lt;class T&gt;
      requires
        !Same&lt;decay_t&lt;T&gt;, basic_iterator&gt;() &amp;&amp;
        !cursor::Next&lt;C&gt;() &amp;&amp;
        cursor::Writable&lt;C, T&gt;()
      constexpr basic_iterator&amp; operator=(T&amp;&amp; t) &amp;
        noexcept(noexcept(declval&lt;C&amp;&gt;().write(static_cast&lt;T&amp;&amp;&gt;(t))));

    friend constexpr decltype(auto) iter_move(const basic_iterator&amp; i)
        noexcept(noexcept(i.get().indirect_move()))
      requires cursor::IndirectMove&lt;C&gt;();

    template &lt;class O&gt;
      requires cursor::IndirectSwap&lt;C, O&gt;()
    friend constexpr void iter_swap(
      const basic_iterator&amp; x, const basic_iterator&lt;O&gt;&amp; y)
        noexcept(noexcept((void)x.indirect_swap(y));
    
    // dereferences
    constexpr decltype(auto) operator*() const
      noexcept(noexcept(declval&lt;const C&amp;&gt;().read()))
        requires cursor::Readable&lt;C&gt;() &amp;&amp; !detail::is_writable&lt;C&gt;;
    constexpr decltype(auto) operator*()
      noexcept(noexcept(reference_t{declval&lt;mixin&amp;&gt;().get()}))
        requires cursor::Next&lt;C&gt;() &amp;&amp; detail::is_writable&lt;C&gt;;
    constexpr decltype(auto) operator*() const
      noexcept(noexcept(
          const_reference_t{declval&lt;const mixin&amp;&gt;().get()}))
        requires cursor::Next&lt;C&gt;() &amp;&amp; detail::is_writable&lt;C&gt;;
    constexpr basic_iterator&amp; operator*() noexcept
      requires !cursor::Next&lt;C&gt;();

    // operator-&gt;: &quot;Manual&quot; deduction override,
    constexpr decltype(auto) operator-&gt;() const
      noexcept(noexcept(declval&lt;const C&amp;&gt;().arrow()))
        requires cursor::Arrow&lt;C&gt;();
    // operator-&gt;: Otherwise, if reference_t is an lvalue reference,
    constexpr auto operator-&gt;() const
      noexcept(noexcept(*declval&lt;const basic_iterator&amp;&gt;()))
        requires cursor::Readable&lt;C&gt;() &amp;&amp; !cursor::Arrow&lt;C&gt;()
          &amp;&amp; is_lvalue_reference&lt;const_reference_t&gt;::value;
    // operator-&gt;: Otherwise, deduce if needed
    constexpr auto operator-&gt;() const
      noexcept(is_nothrow_move_constructible&lt;
               detail::operator_arrow_proxy&lt;basic_iterator&gt;&gt;::value &amp;&amp;
             noexcept(detail::operator_arrow_proxy&lt;basic_iterator&gt;{
                        *declval&lt;const basic_iterator&amp;&gt;()}))
      requires cursor::Readable&lt;C&gt;() &amp;&amp; !cursor::Arrow&lt;C&gt;()
        &amp;&amp; !is_reference&lt;const_reference_t&gt;::value;
         
    // modifiers
    constexpr basic_iterator&amp; operator++() &amp; noexcept;
    constexpr basic_iterator&amp; operator++() &amp;
      noexcept(noexcept(declval&lt;C&amp;&gt;().next()))
      requires cursor::Next&lt;C&gt;();

    constexpr postfix_increment_result_t operator++(int) &amp;
      noexcept(is_nothrow_constructible&lt;postfix_increment_result_t,
        basic_iterator&amp;&gt;::value
        &amp;&amp; is_nothrow_move_constructible&lt;postfix_increment_result_t&gt;::value
        &amp;&amp; noexcept(++declval&lt;basic_iterator&amp;&gt;()));

    constexpr basic_iterator&amp; operator--() &amp;
      noexcept(noexcept(declval&lt;C&amp;&gt;().prev()))
      requires cursor::Bidirectional&lt;C&gt;();

    constexpr basic_iterator operator--(int) &amp;
      noexcept(is_nothrow_copy_constructible&lt;basic_iterator&gt;::value &amp;&amp;
             is_nothrow_move_constructible&lt;basic_iterator&gt;::value &amp;&amp;
             noexcept(--declval&lt;basic_iterator&amp;&gt;()))
      requires cursor::Bidirectional&lt;C&gt;();

    constexpr basic_iterator&amp; operator+=(difference_type n) &amp;
      noexcept(noexcept(declval&lt;C&amp;&gt;().advance(n)))
      requires cursor::RandomAccess&lt;C&gt;();

    constexpr basic_iterator&amp; operator-=(difference_type n) &amp;
      noexcept(noexcept(declval&lt;C&amp;&gt;().advance(-n)))
      requires cursor::RandomAccess&lt;C&gt;();
    
    constexpr decltype(auto) operator[](difference_type n) const
      noexcept(noexcept(*(declval&lt;basic_iterator&amp;&gt;() + n)))
      requires cursor::RandomAccess&lt;C&gt;();

    // non-template type-symmetric ops to enable implicit conversions
    friend constexpr difference_type operator-(
        const basic_iterator&amp; x, const basic_iterator&amp; y)
      noexcept(noexcept(y.get().distance_to(x.get())))
      requires cursor::SizedSentinel&lt;C, C&gt;();
    friend constexpr bool operator==(
        const basic_iterator&amp; x, const basic_iterator&amp; y)
      noexcept(noexcept(x.get().equal(y.get())))
      requires cursor::Sentinel&lt;C, C&gt;();
    friend constexpr bool operator!=(
        const basic_iterator&amp; x, const basic_iterator&amp; y)
      noexcept(noexcept(!(x == y)))
      requires cursor::Sentinel&lt;C, C&gt;();
    friend constexpr bool operator&lt;(
        const basic_iterator&amp; x, const basic_iterator&amp; y)
      noexcept(noexcept(x - y))
      requires cursor::SizedSentinel&lt;C, C&gt;();
    friend constexpr bool operator&gt;(
        const basic_iterator&amp; x, const basic_iterator&amp; y)
      noexcept(noexcept(x - y))
      requires cursor::SizedSentinel&lt;C, C&gt;();
    friend constexpr bool operator&lt;=(
        const basic_iterator&amp; x, const basic_iterator&amp; y)
      noexcept(noexcept(x - y))
      requires cursor::SizedSentinel&lt;C, C&gt;();
    friend constexpr bool operator&gt;=(
        const basic_iterator&amp; x, const basic_iterator&amp; y)
      noexcept(noexcept(x - y))
      requires cursor::SizedSentinel&lt;C, C&gt;();
  };
  
  // basic_iterator nonmember traits
  template &lt;class C&gt;
    struct difference_type&lt;basic_iterator&lt;C&gt;&gt;
      { using type = cursor::difference_type_t&lt;C&gt;; };
  template &lt;cursor::Input C&gt;
    struct iterator_category&lt;basic_iterator&lt;C&gt;&gt;
      { using type = cursor::category_t&lt;C&gt;; };
  template &lt;cursor::Input C&gt;
    struct value_type&lt;basic_iterator&lt;C&gt;&gt;
      { using type = cursor::value_type_t&lt;C&gt;; };
   
  // basic_iterator nonmember functions
  template &lt;_InstanceOf&lt;basic_iterator&gt; BI&gt;
    constexpr decltype(auto) get_cursor(BI&amp;&amp; i)
      noexcept(noexcept(std::forward&lt;BI&gt;(i).get()));

  template &lt;class C&gt;
  constexpr basic_iterator&lt;C&gt; operator+(
      const basic_iterator&lt;C&gt;&amp; i, cursor::difference_type_t&lt;C&gt; n)
    noexcept(is_nothrow_copy_constructible&lt;basic_iterator&lt;C&gt;&gt;::value &amp;&amp;
         is_nothrow_move_constructible&lt;basic_iterator&lt;C&gt;&gt;::value &amp;&amp;
         noexcept(declval&lt;basic_iterator&lt;C&gt;&amp;&gt;() += n))
    requires cursor::RandomAccess&lt;C&gt;();
  template &lt;class C&gt;
  constexpr basic_iterator&lt;C&gt; operator+(
      cursor::difference_type_t&lt;C&gt; n, const basic_iterator&lt;C&gt;&amp; i)
    noexcept(noexcept(i + n))
    requires cursor::RandomAccess&lt;C&gt;();

  template &lt;class C&gt;
  constexpr basic_iterator&lt;C&gt; operator-(
      const basic_iterator&lt;C&gt;&amp; i, cursor::difference_type_t&lt;C&gt; n)
    noexcept(noexcept(i + -n))
    requires cursor::RandomAccess&lt;C&gt;();
  template &lt;class C1, class C2&gt;
    requires cursor::SizedSentinel&lt;C1, C2&gt;()
  constexpr cursor::difference_type_t&lt;C2&gt; operator-(
      const basic_iterator&lt;C1&gt;&amp; lhs, const basic_iterator&lt;C2&gt;&amp; rhs)
    noexcept(noexcept(
      ranges::get_cursor(rhs).distance_to(ranges::get_cursor(lhs))));
  template &lt;class C, class S&gt;
    requires cursor::SizedSentinel&lt;S, C&gt;()
  constexpr difference_type_t&lt;C&gt; operator-(
      const S&amp; lhs, const basic_iterator&lt;C&gt;&amp; rhs)
    noexcept(noexcept(ranges::get_cursor(rhs).distance_to(lhs)));
  template &lt;class C, class S&gt;
    requires cursor::SizedSentinel&lt;S, C&gt;()
  constexpr difference_type_t&lt;C&gt; operator-(
      const basic_iterator&lt;C&gt;&amp; lhs, const S&amp; rhs)
    noexcept(noexcept(-(rhs - lhs)));

  template &lt;class C1, class C2&gt;
    requires cursor::Sentinel&lt;C2, C1&gt;()
  constexpr bool operator==(
      const basic_iterator&lt;C1&gt;&amp; lhs, const basic_iterator&lt;C2&gt;&amp; rhs)
    noexcept(noexcept(ranges::get_cursor(lhs).equal(ranges::get_cursor(rhs));
  template &lt;class C, class S&gt;
    requires cursor::Sentinel&lt;S, C&gt;()
  constexpr bool operator==(
      const basic_iterator&lt;C&gt;&amp; lhs, const S&amp; rhs)
    noexcept(noexcept(ranges::get_cursor(lhs).equal(rhs)));
  template &lt;class C, class S&gt;
    requires cursor::Sentinel&lt;S, C&gt;()
  constexpr bool operator==(
      const S&amp; lhs, const basic_iterator&lt;C&gt;&amp; rhs)
    noexcept(noexcept(rhs == lhs));

  template &lt;class C1, class C2&gt;
    requires cursor::Sentinel&lt;C2, C1&gt;()
  constexpr bool operator!=(
      const basic_iterator&lt;C1&gt;&amp; lhs, const basic_iterator&lt;C2&gt;&amp; rhs)
    noexcept(noexcept(!(lhs == rhs)));
  template &lt;class C, class S&gt;
    requires cursor::Sentinel&lt;S, C&gt;()
  constexpr bool operator!=(
      const basic_iterator&lt;C&gt;&amp; lhs, const S&amp; rhs)
    noexcept(noexcept(!ranges::get_cursor(lhs).equal(rhs)));
  template &lt;class C, class S&gt;
    requires cursor::Sentinel&lt;S, C&gt;()
  constexpr bool operator!=(
      const S&amp; lhs, const basic_iterator&lt;C&gt;&amp; rhs)
    noexcept(noexcept(!ranges::get_cursor(rhs).equal(lhs)));

  template &lt;class C1, class C2&gt;
    requires cursor::SizedSentinel&lt;C1, C2&gt;()
  constexpr bool operator&lt;(
      const basic_iterator&lt;C1&gt;&amp; lhs, const basic_iterator&lt;C2&gt;&amp; rhs)
    noexcept(noexcept(lhs - rhs &lt; 0));

  template &lt;class C1, class C2&gt;
    requires cursor::SizedSentinel&lt;C1, C2&gt;()
  constexpr bool operator&gt;(
      const basic_iterator&lt;C1&gt;&amp; lhs, const basic_iterator&lt;C2&gt;&amp; rhs)
    noexcept(noexcept(lhs - rhs &gt; 0));

  template &lt;class C1, class C2&gt;
    requires cursor::SizedSentinel&lt;C1, C2&gt;()
  constexpr bool operator&lt;=(
      const basic_iterator&lt;C1&gt;&amp; lhs, const basic_iterator&lt;C2&gt;&amp; rhs)
    noexcept(noexcept(lhs - rhs &lt;= 0));

  template &lt;class C1, class C2&gt;
    requires cursor::SizedSentinel&lt;C1, C2&gt;()
  constexpr bool operator&gt;=(
      const basic_iterator&lt;C1&gt;&amp; lhs, const basic_iterator&lt;C2&gt;&amp; rhs)
    noexcept(noexcept(lhs - rhs &gt;= 0));
}}}}</code></pre>
<h5 id="requirements-basic_iterator.require">24.8.9.3.2  Requirements [basic_iterator.require]</h5>
<p>Private members of class <code>basic_iterator</code> are for exposition only (C++17 17.5.2.3 Private members [objects.within.classes]).</p>
<pre><code>using mixin = mixin_t&lt;C&gt;;
using mixin::get;</code></pre>
<blockquote>
<p><em>Remarks:</em> Provides access to the <code>get</code> functions described in <a href="#t-object-access-mixin.access">mixin object access [mixin.object]</a>.</p>
</blockquote>
<pre><code>using assoc_t = <em>see below</em>;</code></pre>
<blockquote>
<p><em>Remarks:</em> <code>assoc_t</code> is an alias for an unspecified type containing several implementation-supplied types.</p>
</blockquote>
<pre><code>using typename assoc_t::postfix_increment_result_t;</code></pre>
<blockquote>
<p><em>Remarks:</em> If <code>cursor::Next&lt;C&gt;</code> is satisfied, <code>postfix_increment_result_t</code> shall satisfy the requirements imposed by <a href="#op-pos-inc"><code>operator++(int)</code> below</a> and concept <code>WeaklyIncrementable&lt;basic_iterator&lt;C&gt;&gt;</code> (RangesTS[iterators.weaklyincrementable]). If <code>cursor::Next&lt;C&gt;</code> is not satisfied, <code>postfix_increment_result_t</code> has no requirements.</p>
</blockquote>
<pre><code>using typename assoc_t::reference_t;</code></pre>
<p><span style="background-color:lightgrey"><em>TBS</em></span></p>
<pre><code>using typename assoc_t::const_reference_t;</code></pre>
<p><span style="background-color:lightgrey"><em>TBS</em></span></p>
<pre><code>using difference_type = cursor::difference_type_t&lt;C&gt;;</code></pre>
<p><span style="background-color:lightgrey"><em>TBS</em></span></p>
<h5 id="constructors-assignments-and-moves-basic_iterator.cons">24.8.9.3.3  Constructors, assignments, and moves [basic_iterator.cons]</h5>
<pre><code>template &lt;ConvertibleTo&lt;C&gt; O&gt;
  constexpr basic_iterator(const basic_iterator&lt;O&gt;&amp; that)
    noexcept(is_nothrow_constructible&lt;mixin, const O&amp;&gt;::value);</code></pre>
<blockquote>
<p><em>Effects:</em> Constructs an object of class <code>basic_iterator</code>.</p>
</blockquote>
<blockquote>
<p><em>Postconditions:</em> The state of <code>*this</code> is the same as <code>that</code>.</p>
</blockquote>
<pre><code>template &lt;ConvertibleTo&lt;C&gt; O&gt;
  constexpr basic_iterator(basic_iterator&lt;O&gt;&amp;&amp; that)
    noexcept(is_nothrow_constructible&lt;mixin, O&amp;&amp;&gt;::value);</code></pre>
<blockquote>
<p><em>Effects:</em> Constructs an object of class <code>basic_iterator</code>.</p>
</blockquote>
<blockquote>
<p><em>Postconditions:</em> The state of <code>*this</code> is the same as the initial state of <code>that</code>. <code>that</code> is in a valid but unspecified state.</p>
</blockquote>
<pre><code>template &lt;ConvertibleTo&lt;C&gt; O&gt;
  constexpr basic_iterator&amp; operator=(const basic_iterator&lt;O&gt;&amp; that) &amp;
    noexcept(is_nothrow_assignable&lt;C&amp;, const O&amp;&gt;::value);</code></pre>
<blockquote>
<p><em>Effects:</em> If <code>*this</code> and <code>that</code> are not the same object, copy assigns <code>that</code> to <code>*this</code>. Otherwise no effect.</p>
</blockquote>
<blockquote>
<p><em>Returns:</em> <code>*this</code>.</p>
</blockquote>
<blockquote>
<p><em>Postconditions:</em> The state of <code>*this</code> is the same as <code>that</code>.</p>
</blockquote>
<pre><code>template &lt;ConvertibleTo&lt;C&gt; O&gt;
  constexpr basic_iterator&amp; operator=(basic_iterator&lt;O&gt;&amp;&amp; that) &amp;
    noexcept(is_nothrow_assignable&lt;C&amp;, O&amp;&amp;&gt;::value);</code></pre>
<blockquote>
<p><em>Effects:</em> Move assigns <code>that</code> to <code>*this</code>.</p>
</blockquote>
<blockquote>
<p><em>Returns:</em> <code>*this</code>.</p>
</blockquote>
<blockquote>
<p><em>Postconditions:</em> The state of <code>*this</code> is the same as the initial state of <code>that</code>. <code>that</code> is left in a valid but unspecified state.</p>
</blockquote>
<pre><code>template &lt;class T&gt;
  requires
    !Same&lt;decay_t&lt;T&gt;, basic_iterator&gt;() &amp;&amp;
    !cursor::Next&lt;C&gt;() &amp;&amp;
    cursor::Writable&lt;C, T&gt;()
  constexpr basic_iterator&amp; operator=(T&amp;&amp; t) &amp;
    noexcept(noexcept(declval&lt;C&amp;&gt;().write(static_cast&lt;T&amp;&amp;&gt;(t))));</code></pre>
<blockquote>
<p><em>Effects:</em> Move assigns <code>t</code> to <code>*this</code>.</p>
</blockquote>
<blockquote>
<p><em>Returns:</em> <code>*this</code>.</p>
</blockquote>
<blockquote>
<p><em>Postconditions:</em> The state of <code>*this</code> is the same as the initial state of <code>t</code>. <code>t</code> is left in a valid but unspecified state.</p>
</blockquote>
<pre><code>friend constexpr decltype(auto) iter_move(const basic_iterator&amp; i)
    noexcept(noexcept(i.get().indirect_move()))
  requires cursor::IndirectMove&lt;C&gt;();</code></pre>
<p><span style="background-color:lightgrey"><em>TBS</em></span></p>
<pre><code>template &lt;class O&gt;
  requires cursor::IndirectSwap&lt;C, O&gt;()
friend constexpr void iter_swap(
  const basic_iterator&amp; x, const basic_iterator&lt;O&gt;&amp; y)
    noexcept(noexcept((void)x.indirect_swap(y));</code></pre>
<p><span style="background-color:lightgrey"><em>TBS</em></span></p>
<h5 id="dereferences-basic_iterator.deref">24.8.9.3.4  Dereferences [basic_iterator.deref]</h5>
<pre><code>constexpr decltype(auto) operator*() const
  noexcept(noexcept(declval&lt;const C&amp;&gt;().read()));</code></pre>
<blockquote>
<p><em>Returns:</em> <code>get().read()</code>.</p>
</blockquote>
<blockquote>
<p><em>Remarks:</em> <code>get().read()</code> requires <code>requires(C&amp; c) { c.read(); }</code>.</p>
</blockquote>
<pre><code>constexpr decltype(auto) operator*() noexcept
  requires cursor::is_writable&lt;C&gt;;</code></pre>
<blockquote>
<p><em>Returns:</em> <code>reference_t{get()}</code>.</p>
</blockquote>
<pre><code>constexpr decltype(auto) operator*() const noexcept
  requires cursor::is_writable&lt;C&gt;;</code></pre>
<blockquote>
<p><em>Returns:</em> <code>const_reference_t{get()}</code>.</p>
</blockquote>
<pre><code>constexpr decltype(auto) operator-&gt;() const
  noexcept(noexcept(declval&lt;const C&amp;&gt;().arrow()))
  requires cursor::Arrow&lt;const C&gt;();</code></pre>
<blockquote>
<p><em>Returns:</em> <code>get().arrow()</code>.</p>
</blockquote>
<h5 id="modifiers-basic_iterator.mods">24.8.9.3.5  Modifiers [basic_iterator.mods]</h5>
<pre><code>constexpr basic_iterator&amp; operator++() &amp; noexcept;</code></pre>
<blockquote>
<p><em>Effects:</em> None.</p>
</blockquote>
<blockquote>
<p><em>Returns:</em> <code>*this</code>.</p>
</blockquote>
<blockquote>
<p>[<em>Note:</em> This overload is only selected if the following overload is not selected. <em>-- end note</em>]</p>
</blockquote>
<pre><code>constexpr basic_iterator&amp; operator++() &amp;
  noexcept(noexcept(declval&lt;C&amp;&gt;().next()))
  requires cursor::Next&lt;C&gt;();</code></pre>
<blockquote>
<p><em>Effects:</em> <code>get().next()</code>.</p>
</blockquote>
<blockquote>
<p><em>Returns:</em> <code>*this</code>.</p>
</blockquote>
<pre><code>constexpr basic_iterator&amp; operator++(int) &amp; noexcept;</code></pre>
<blockquote>
<p><em>Effects:</em> None.</p>
</blockquote>
<blockquote>
<p><em>Returns:</em> <code>*this</code>.</p>
</blockquote>
<blockquote>
<p>[<em>Note:</em> This overload is only selected if the following overload is not selected. <em>-- end note</em>]</p>
</blockquote>
<p><a name="op-pos-inc"></a></p>
<pre><code>constexpr postfix_increment_result_t operator++(int) &amp;
  noexcept(is_nothrow_constructible&lt;postfix_increment_result_t,
    basic_iterator&amp;&gt;::value
    &amp;&amp; is_nothrow_move_constructible&lt;postfix_increment_result_t&gt;::value &amp;&amp;
         noexcept(++declval&lt;basic_iterator&amp;&gt;()))
  requires cursor::Next&lt;C&gt;();</code></pre>
<blockquote>
<p><em>Effects:</em><br />
 <code>postfix_increment_result_t tmp(*this);</code><br />
 <code>++*this;</code><br />
 <code>return tmp;</code></p>
</blockquote>
<pre><code>constexpr basic_iterator&amp; operator--() &amp;
  noexcept(noexcept(declval&lt;C&amp;&gt;().prev()))
  requires cursor::Bidirectional&lt;C&gt;();</code></pre>
<blockquote>
<p><em>Effects:</em> <code>get().prev();</code>.</p>
</blockquote>
<blockquote>
<p><em>Returns:</em> <code>*this</code>.</p>
</blockquote>
<pre><code>constexpr basic_iterator operator--(int) &amp;
  noexcept(is_nothrow_copy_constructible&lt;basic_iterator&gt;::value &amp;&amp;
         is_nothrow_move_constructible&lt;basic_iterator&gt;::value &amp;&amp;
         noexcept(--declval&lt;basic_iterator&amp;&gt;()))
  requires cursor::Bidirectional&lt;C&gt;();</code></pre>
<blockquote>
<p><em>Effects:</em><br />
 <code>auto tmp = *this;</code><br />
 <code>--*this;</code><br />
 <code>return tmp;</code></p>
</blockquote>
<pre><code>constexpr basic_iterator&amp; operator+=(difference_type n) &amp;
  noexcept(noexcept(declval&lt;C&amp;&gt;().advance(n)))
  requires cursor::RandomAccess&lt;C&gt;();</code></pre>
<blockquote>
<p><em>Effects:</em> <code>get().advance(n)</code>.</p>
</blockquote>
<blockquote>
<p><em>Returns:</em> <code>*this</code>.</p>
</blockquote>
<pre><code>constexpr basic_iterator&amp; operator-=(difference_type n) &amp;
  noexcept(noexcept(declval&lt;C&amp;&gt;().advance(-n)))
  requires cursor::RandomAccess&lt;C&gt;();  </code></pre>
<blockquote>
<p><em>Effects:</em> <code>get().advance(-n)</code>.</p>
</blockquote>
<blockquote>
<p><em>Returns:</em> <code>*this</code>.</p>
</blockquote>
<pre><code>friend constexpr basic_iterator
  operator+(const basic_iterator&amp; i, difference_type n)
    noexcept(is_nothrow_copy_constructible&lt;basic_iterator&gt;::value &amp;&amp;
         is_nothrow_move_constructible&lt;basic_iterator&gt;::value &amp;&amp;
         noexcept(declval&lt;C&amp;&gt;().advance(n)))
    requires cursor::RandomAccess&lt;C&gt;();</code></pre>
<blockquote>
<p><em>Effects:</em><br />
 <code>auto tmp = i;</code><br />
 <code>tmp.get().advance(n);</code><br />
 <code>return tmp;</code></p>
</blockquote>
<pre><code>friend constexpr basic_iterator
  operator+(difference_type n, const basic_iterator&amp; i)
    noexcept(noexcept(i + n))
    requires cursor::RandomAccess&lt;C&gt;();</code></pre>
<blockquote>
<p><em>Returns:</em> <code>i + n</code>.</p>
</blockquote>
<pre><code>friend constexpr basic_iterator
  operator-(const basic_iterator&amp; i, difference_type n)
    noexcept(noexcept(i + -n))
    requires cursor::RandomAccess&lt;C&gt;();    </code></pre>
<blockquote>
<p><em>Returns:</em> <code>i + -n</code>.</p>
</blockquote>
<pre><code>constexpr decltype(auto) operator[](difference_type n) const
  noexcept(noexcept(*(declval&lt;basic_iterator&amp;&gt;() + n)))
  requires cursor::RandomAccess&lt;C&gt;();</code></pre>
<blockquote>
<p><em>Returns:</em> <code>*(*this + n)</code>.</p>
</blockquote>
<h5 id="basic_iterator-nonmember-functions-basic_iterator.nonmem">24.8.9.3.6  <code>basic_iterator</code> nonmember functions [basic_iterator.nonmem]</h5>
<pre><code>template &lt;class C&gt;
  constexpr C&amp; get_cursor(basic_iterator&lt;C&gt;&amp; i)
    noexcept(noexcept(i.get()))</code></pre>
<blockquote>
<p><em>Returns:</em> <code>i.get()</code>.</p>
</blockquote>
<pre><code>template &lt;class C&gt;
  constexpr const C&amp; get_cursor(const basic_iterator&lt;C&gt;&amp; i)
    noexcept(noexcept(i.get()))</code></pre>
<blockquote>
<p><em>Returns:</em> <code>i.get()</code>.</p>
</blockquote>
<pre><code>template &lt;class C&gt;
  constexpr C&amp;&amp; get_cursor(basic_iterator&lt;C&gt;&amp;&amp; i)
    noexcept(noexcept(i.get()))</code></pre>
<blockquote>
<p><em>Returns:</em> <code>std::move(i.get())</code>.</p>
</blockquote>
<pre><code>template &lt;class C&gt;
  requires cursor::Sentinel&lt;C, C&gt;()
constexpr bool operator==(
  const basic_iterator&lt;C&gt;&amp; lhs, const basic_iterator&lt;C&gt;&amp; rhs)
  noexcept(noexcept(
    static_cast&lt;bool&gt;(ranges::get_cursor(lhs).equal(ranges::get_cursor(rhs))))</code></pre>
<blockquote>
<p><em>Returns:</em> <code>ranges::get_cursor(lhs).equal(ranges::get_cursor(rhs))</code>.</p>
</blockquote>
<pre><code>template &lt;class C, class S&gt;
  requires cursor::Sentinel&lt;S, C&gt;()
constexpr bool operator==(
  const basic_iterator&lt;C&gt;&amp; lhs, const S&amp; rhs)
  noexcept(noexcept(ranges::get_cursor(lhs).equal(rhs)))</code></pre>
<blockquote>
<p><em>Returns:</em> <code>ranges::get_cursor(lhs).equal(rhs)</code>.</p>
</blockquote>
<pre><code>template &lt;class C, class S&gt;
  requires cursor::Sentinel&lt;S, C&gt;()
constexpr bool operator==(
  const S&amp; lhs, const basic_iterator&lt;C&gt;&amp; rhs)
  noexcept(noexcept(rhs == lhs))</code></pre>
<blockquote>
<p><em>Returns:</em> <code>rhs == lhs</code>.</p>
</blockquote>
<pre><code>template &lt;class C&gt;
  requires cursor::Sentinel&lt;C, C&gt;()
constexpr bool operator!=(
  const basic_iterator&lt;C&gt;&amp; lhs, const basic_iterator&lt;C&gt;&amp; rhs)
  noexcept(noexcept(!(lhs == rhs)))</code></pre>
<blockquote>
<p><em>Returns:</em> <code>!(lhs == rhs</code>.</p>
</blockquote>
<pre><code>template &lt;class C, class S&gt;
  requires cursor::Sentinel&lt;S, C&gt;()
constexpr bool operator!=(
  const basic_iterator&lt;C&gt;&amp; lhs, const S&amp; rhs)
  noexcept(noexcept(!get_cursor(lhs).equal(rhs)))</code></pre>
<blockquote>
<p><em>Returns:</em> <code>!ranges::get_cursor(lhs).equal(rhs)</code>.</p>
</blockquote>
<pre><code>template &lt;class C, class S&gt;
  requires cursor::Sentinel&lt;S, C&gt;()
constexpr bool operator!=(
  const S&amp; lhs, const basic_iterator&lt;C&gt;&amp; rhs)
  noexcept(noexcept(rhs != lhs))</code></pre>
<blockquote>
<p><em>Returns:</em> <code>rhs != lhs</code>.</p>
</blockquote>
<pre><code>template &lt;class C&gt;
  requires cursor::SizedSentinel&lt;C, C&gt;()
constexpr cursor::difference_type_t&lt;C&gt; operator-(
  const basic_iterator&lt;C&gt;&amp; lhs, const basic_iterator&lt;C&gt;&amp; rhs)
  noexcept(noexcept(get_cursor(rhs).distance_to(get_cursor(lhs))))</code></pre>
<blockquote>
<p><em>Returns:</em> <code>ranges::get_cursor(rhs).distance_to(ranges::get_cursor(lhs))</code>.</p>
</blockquote>
<pre><code>template &lt;class C, class S&gt;
  requires cursor::SizedSentinel&lt;S, C&gt;()
constexpr cursor::difference_type_t&lt;C&gt; operator-(
  const S&amp; lhs, const basic_iterator&lt;C&gt;&amp; rhs)
  noexcept(noexcept(get_cursor(rhs).distance_to(lhs)))</code></pre>
<blockquote>
<p><em>Returns:</em> <code>get_cursor(rhs).distance_to(lhs)</code>.</p>
</blockquote>
<pre><code>template &lt;class C, class S&gt;
  requires cursor::SizedSentinel&lt;S, C&gt;()
constexpr cursor::difference_type_t&lt;C&gt; operator-(
  const basic_iterator&lt;C&gt;&amp; lhs, const S&amp; rhs)
  noexcept(noexcept(-(rhs - lhs)))</code></pre>
<blockquote>
<p><em>Returns:</em> <code>-(rhs - lhs)</code>.</p>
</blockquote>
<pre><code>template &lt;class C&gt;
  requires cursor::SizedSentinel&lt;C, C&gt;()
constexpr bool operator&lt;(
  const basic_iterator&lt;C&gt;&amp; lhs, const basic_iterator&lt;C&gt;&amp; rhs)
  noexcept(noexcept(0 &lt; get_cursor(rhs).distance_to(lhs)))</code></pre>
<blockquote>
<p><em>Returns:</em> <code>0 &lt; ranges::get_cursor(rhs).distance_to(lhs)</code>.</p>
</blockquote>
<pre><code>template &lt;class C&gt;
  requires cursor::SizedSentinel&lt;C, C&gt;()
constexpr bool operator&gt;(
  const basic_iterator&lt;C&gt;&amp; lhs, const basic_iterator&lt;C&gt;&amp; rhs)
  noexcept(noexcept(rhs &lt; lhs))</code></pre>
<blockquote>
<p><em>Returns:</em> <code>rhs &lt; lhs</code>.</p>
</blockquote>
<pre><code>template &lt;class C&gt;
  requires cursor::SizedSentinel&lt;C, C&gt;()
constexpr bool operator&lt;=(
  const basic_iterator&lt;C&gt;&amp; lhs, const basic_iterator&lt;C&gt;&amp; rhs)
  noexcept(noexcept(!(rhs &lt; lhs)))</code></pre>
<blockquote>
<p><em>Returns:</em> <code>!(rhs &lt; lhs)</code>.</p>
</blockquote>
<pre><code>template &lt;class C&gt;
  requires cursor::SizedSentinel&lt;C, C&gt;()
constexpr bool operator&gt;=(
  const basic_iterator&lt;C&gt;&amp; lhs, const basic_iterator&lt;C&gt;&amp; rhs)
  noexcept(noexcept(!(lhs &lt; rhs)))</code></pre>
<blockquote>
<p><em>Returns:</em> <code>!(lhs &lt; rhs)</code>.</p>
</blockquote>
<!-- generate-section-numbers=false -->
<h2 id="open-questions">Open questions</h2>
<p><strong>Is the target C++17 or the the Ranges TS?</strong> Deferred until the committee decides if the Concepts TS and Ranges TS are included in C++17.</p>
<p><strong>Should the class template <code>basic_mixin</code> be added to 20 &quot;General utilities&quot; or 24 &quot;Iterators&quot;?</strong> The proposed wording adds it to &quot;Iterators&quot;, but there is nothing iterator specific in its design or description, and it is generally useful across multiple problem domains. LEWG input would be helpful.</p>
<h2 id="acknowledgements">Acknowledgements</h2>
<p>Thanks to David Abrahams, Jeremy Siek, and Thomas Witt for Boost <code>iterator_facade</code>. Having such a strong role model greatly enriched this proposal.</p>
<p>Thanks to the folks who implemented the Concepts TS for GCC 6.0. Their development snapshots are what allowed this proposal to be implemented and tested.</p>
<h2 id="references">References</h2>
<p>[<a name="1">1</a>] David Abrahams, Jeremy Siek, Thomas Witt, <a href="https://www.boost.org/doc/libs/1_59_0/libs/iterator/doc/iterator_facade.html">Boost Iterator Facade</a>, 2003.</p>
<p>[<a name="2">2</a>] Chandler Carruth, <a href="https://github.com/llvm-mirror/llvm/blob/master/include/llvm/ADT/iterator.h">LLVM <code>iterator_facade_base</code> iterator.h</a>, 2014.</p>
<p>[<a name="3">3</a>] Andrew Sutton, <a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2015/n4553.pdf">N4553, Working Draft, C++ extensions for Concepts</a>, 2015.</p>
<p>[<a name="4">4</a>] Eric Niebler, Casey Carter, <a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2015/n4560.pdf">N4650, Working Draft, C++ Extensions for Ranges</a>, 2015.</p>
<p>[<a name="5">5</a>] Eric Niebler, Casey Carter, <a href="https://github.com/ericniebler/range-v3">Experimental range library for C++11/14/17</a>, 2015. Requires a C++14 compiler. Simulates concepts with macros and templates.</p>
<p>[<a name="6">6</a>] Casey Carter, Eric Niebler, <a href="https://github.com/CaseyCarter/cmcstl2">An implementation of C++ Extensions for Ranges</a>, 2015. Requires a C++14 compiler supporting concepts (e.g. GCC trunk).</p>
<p>[<a name="7">7</a>] David Abrahams, Jeremy Siek, Thomas Witt, <a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2004/n1641.html">N1641, Iterator Facade and Adaptor</a>, 2004.</p>
<p>[<a name="8">8</a>] David Abrahams, Jeremy Siek, Thomas Witt, <a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2004/n1640.html">N1640, New Iterator Concepts</a>, 2004.</p>
<hr />
</body>
</html>