|
68 | 68 |
|
69 | 69 | </head> |
70 | 70 | <body> |
71 | | -<header data-kunai-mdinfo="{"meta": {"header": ["ranges"], "namespace": ["std::ranges"], "class": ["filter_view::iterator"], "id-type": ["function"], "cpp": ["cpp20"]}, "sources": [{"id": "104fc200ed126cb0adb6c5d94757821d8b41a154", "source": "#include <ranges>\n#include <vector>\n#include <iostream>\n\nint main() {\n using std::ranges::filter_view;\n using std::ranges::iterator_t;\n\n std::vector<int> vec = {0, 1, 2, 3, 4, 5};\n\n filter_view fv{vec, [](int x){ return x % 2 == 0; }};\n\n iterator_t<decltype(fv)> i(fv, vec.begin());\n\n std::cout << *i << '\\n';\n i++;\n std::cout << *i << '\\n';\n i++;\n std::cout << *i << '\\n';\n}\n"}], "page_id": ["reference", "ranges", "filter_view", "iterator", "op_constructor"]}"> |
| 71 | +<header data-kunai-mdinfo="{"meta": {"header": ["ranges"], "namespace": ["std::ranges"], "class": ["filter_view::iterator"], "id-type": ["function"], "cpp": ["cpp20"]}, "sources": [{"id": "78fa235d51ee5fb1d219db6ed23002c1604a2730", "source": "#include <ranges>\n#include <vector>\n#include <iostream>\n\nint main() {\n std::vector<int> vec = {0, 1, 2, 3, 4, 5};\n\n std::ranges::filter_view fv{vec, [](int x){ return x % 2 == 0; }};\n\n // begin()\u3092\u7d4c\u7531\u3057\u3066\u30a4\u30c6\u30ec\u30fc\u30bf\u3092\u53d6\u5f97\u3059\u308b\n auto i = fv.begin();\n\n std::cout << *i << '\\n';\n i++;\n std::cout << *i << '\\n';\n i++;\n std::cout << *i << '\\n';\n}\n"}], "page_id": ["reference", "ranges", "filter_view", "iterator", "op_constructor"]}"> |
72 | 72 | <nav class="navbar navbar-default" role="navigation"> |
73 | 73 | <div class="container-fluid"> |
74 | 74 | <div class="navbar-header"> |
|
212 | 212 |
|
213 | 213 | <p class="text-right"><small> |
214 | 214 | 最終更新日時(UTC): |
215 | | - <span itemprop="datePublished" content="2025-09-24T10:08:35"> |
216 | | - 2025年09月24日 10時08分35秒 |
| 215 | + <span itemprop="datePublished" content="2026-05-21T07:00:02"> |
| 216 | + 2026年05月21日 07時00分02秒 |
217 | 217 | </span> |
218 | 218 | <br/> |
219 | 219 | <span itemprop="author" itemscope itemtype="http://schema.org/Person"> |
220 | | - <span itemprop="name">Raclamusi</span> |
| 220 | + <span itemprop="name">Akira Takahashi</span> |
221 | 221 | </span> |
222 | 222 | が更新 |
223 | 223 | </small></p> |
|
237 | 237 | <div class="col-sm-12 content-body"> |
238 | 238 |
|
239 | 239 | <div class="identifier-type">function</div><div class="header"><ranges></div><h1 itemprop="name"><span class="namespace" title="namespace std::ranges">std::ranges::</span><span class="class" title="class filter_view::iterator">filter_view::iterator::</span><span class="token">コンストラクタ</span><span class="cpp cpp20" title="C++20で追加">(C++20)</span></h1> |
240 | | -<div itemprop="articleBody"><p><div class="codehilite"><pre><span></span><code><span class="n">iterator</span><span class="p">()</span><span class="w"> </span><span class="k">requires</span><span class="w"> </span><span class="n"><a href="../../../concepts/default_initializable.html">default_initializable</a></span><span class="o"><</span><span class="n"><a href="../../iterator_t.html">iterator_t</a></span><span class="o"><</span><span class="n">V</span><span class="o">>></span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="k">default</span><span class="p">;</span><span class="w"> </span><span class="c1">// (1)</span> |
| 240 | +<div itemprop="articleBody"><p><div class="codehilite"><pre><span></span><code><span class="k">public</span><span class="o">:</span> |
| 241 | +<span class="w"> </span><span class="n">iterator</span><span class="p">()</span><span class="w"> </span><span class="k">requires</span><span class="w"> </span><span class="n"><a href="../../../concepts/default_initializable.html">default_initializable</a></span><span class="o"><</span><span class="n"><a href="../../iterator_t.html">iterator_t</a></span><span class="o"><</span><span class="n">V</span><span class="o">>></span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="k">default</span><span class="p">;</span><span class="w"> </span><span class="c1">// (1)</span> |
241 | 242 |
|
242 | | -<span class="k">constexpr</span><span class="w"> </span><span class="n">iterator</span><span class="p">(</span><span class="n">filter_view</span><span class="o">&</span><span class="w"> </span><span class="n">parent</span><span class="p">,</span><span class="w"> </span><span class="n"><a href="../../iterator_t.html">iterator_t</a></span><span class="o"><</span><span class="n">V</span><span class="o">></span><span class="w"> </span><span class="n">current</span><span class="p">);</span><span class="w"> </span><span class="c1">// (2)</span> |
| 243 | +<span class="k">private</span><span class="o">:</span> |
| 244 | +<span class="w"> </span><span class="k">constexpr</span><span class="w"> </span><span class="n">iterator</span><span class="p">(</span><span class="n">filter_view</span><span class="o">&</span><span class="w"> </span><span class="n">parent</span><span class="p">,</span><span class="w"> </span><span class="n"><a href="../../iterator_t.html">iterator_t</a></span><span class="o"><</span><span class="n">V</span><span class="o">></span><span class="w"> </span><span class="n">current</span><span class="p">);</span><span class="w"> </span><span class="c1">// (2) 説明専用</span> |
243 | 245 | </code></pre></div> |
244 | 246 | </p> |
245 | 247 | <h2>概要</h2> |
246 | 248 | <p><code><a href="../iterator.html">filter_view::iterator</a></code>オブジェクトを構築する。</p> |
| 249 | +<ul> |
| 250 | +<li>(1) : デフォルトコンストラクタ</li> |
| 251 | +<li>(2) : <code>private</code>な説明専用コンストラクタ。<code><a href="../../filter_view.html">filter_view</a></code>の<code><a href="../begin.html">begin()</a></code>から呼び出される</li> |
| 252 | +</ul> |
247 | 253 | <h2>効果</h2> |
248 | 254 | <ul> |
249 | 255 | <li>(1) : <code>current_</code>、<code>parent_</code>を<a class="cpprefjp-defined-word" data-desc="デフォルト初期化。`T x;`構文での初期化。トリビアルにデフォルト構築可能な型の場合は初期化されず(オブジェクトのlifetimeは開始される)、そうではないクラス型はデフォルトコンストラクタで初期化する。配列型の場合は各要素が再帰的にデフォルト初期化される">デフォルト構築</a>する</li> |
250 | 256 | <li>(2) : <code>current_</code>を<code>std::move(current_)</code>で、<code>parent_</code>を<code><a href="../../../memory/addressof.html">addressof</a>(parent_)</code>で初期化する</li> |
251 | 257 | </ul> |
252 | 258 | <h2>例</h2> |
253 | | -<p><div class="yata" id="104fc200ed126cb0adb6c5d94757821d8b41a154"><div class="codehilite"><pre><span></span><code><span class="cp">#include <a href="../../../ranges.html"><ranges></a></span> |
| 259 | +<p><div class="yata" id="78fa235d51ee5fb1d219db6ed23002c1604a2730"><div class="codehilite"><pre><span></span><code><span class="cp">#include <a href="../../../ranges.html"><ranges></a></span> |
254 | 260 | <span class="cp">#include <a href="../../../vector.html"><vector></a></span> |
255 | 261 | <span class="cp">#include <a href="../../../iostream.html"><iostream></a></span> |
256 | 262 |
|
257 | 263 | <span class="kt">int</span><span class="w"> </span><span class="nf">main</span><span class="p">()</span><span class="w"> </span><span class="p">{</span> |
258 | | -<span class="w"> </span><span class="k">using</span><span class="w"> </span><span class="n">std</span><span class="o">::</span><span class="n">ranges</span><span class="o">::</span><span class="n">filter_view</span><span class="p">;</span> |
259 | | -<span class="w"> </span><span class="k">using</span><span class="w"> </span><span class="n">std</span><span class="o">::</span><span class="n">ranges</span><span class="o">::</span><span class="n"><a href="../../iterator_t.html">iterator_t</a></span><span class="p">;</span> |
260 | | - |
261 | 264 | <span class="w"> </span><span class="n"><a href="../../../vector/vector.html">std::vector</a></span><span class="o"><</span><span class="kt">int</span><span class="o">></span><span class="w"> </span><span class="n">vec</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="p">{</span><span class="mi">0</span><span class="p">,</span><span class="w"> </span><span class="mi">1</span><span class="p">,</span><span class="w"> </span><span class="mi">2</span><span class="p">,</span><span class="w"> </span><span class="mi">3</span><span class="p">,</span><span class="w"> </span><span class="mi">4</span><span class="p">,</span><span class="w"> </span><span class="mi">5</span><span class="p">};</span> |
262 | 265 |
|
263 | | -<span class="w"> </span><span class="n">filter_view</span><span class="w"> </span><span class="n">fv</span><span class="p">{</span><span class="n">vec</span><span class="p">,</span><span class="w"> </span><span class="p">[](</span><span class="kt">int</span><span class="w"> </span><span class="n">x</span><span class="p">){</span><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">x</span><span class="w"> </span><span class="o">%</span><span class="w"> </span><span class="mi">2</span><span class="w"> </span><span class="o">==</span><span class="w"> </span><span class="mi">0</span><span class="p">;</span><span class="w"> </span><span class="p">}};</span> |
| 266 | +<span class="w"> </span><span class="n">std</span><span class="o">::</span><span class="n">ranges</span><span class="o">::</span><span class="n">filter_view</span><span class="w"> </span><span class="n">fv</span><span class="p">{</span><span class="n">vec</span><span class="p">,</span><span class="w"> </span><span class="p">[](</span><span class="kt">int</span><span class="w"> </span><span class="n">x</span><span class="p">){</span><span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">x</span><span class="w"> </span><span class="o">%</span><span class="w"> </span><span class="mi">2</span><span class="w"> </span><span class="o">==</span><span class="w"> </span><span class="mi">0</span><span class="p">;</span><span class="w"> </span><span class="p">}};</span> |
264 | 267 |
|
265 | | -<span class="w"> </span><span class="n"><span style="color:#ff0000">iterator_t<decltype(fv)></span></span><span class="w"> </span><span class="n">i</span><span class="p">(</span><span class="n">fv</span><span class="p">,</span><span class="w"> </span><span class="n">vec</span><span class="p">.</span><span class="n">begin</span><span class="p">());</span> |
| 268 | +<span class="w"> </span><span class="c1">// begin()を経由してイテレータを取得する</span> |
| 269 | +<span class="w"> </span><span class="k">auto</span><span class="w"> </span><span class="n">i</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n"><a href="../begin.html">fv.begin()</a></span><span class="p">;</span> |
266 | 270 |
|
267 | 271 | <span class="w"> </span><span class="n"><a href="../../../iostream/cout.html">std::cout</a></span><span class="w"> </span><span class="o"><<</span><span class="w"> </span><span class="o">*</span><span class="n">i</span><span class="w"> </span><span class="o"><<</span><span class="w"> </span><span class="sc">'\n'</span><span class="p">;</span> |
268 | 272 | <span class="w"> </span><span class="n">i</span><span class="o">++</span><span class="p">;</span> |
@@ -293,6 +297,10 @@ <h2>参照</h2> |
293 | 297 | <ul> |
294 | 298 | <li><a href="https://timsong-cpp.github.io/cppwp/n4861/range.filter" target="_blank">N4861 24.7.4 Filter view</a></li> |
295 | 299 | <li><a href="https://timsong-cpp.github.io/cppwp/n4950/range.filter" target="_blank">N4950 26.7.8 Filter view</a></li> |
| 300 | +<li><a href="https://open-std.org/jtc1/sc22/wg21/docs/papers/2026/p3059r2.html" target="_blank">P3059R2 Making user-defined constructors of view iterators/sentinels private</a><ul> |
| 301 | +<li>C++26で、(2)の<a class="cpprefjp-defined-word" data-desc="プログラム定義。ユーザー(プログラマ)によって定義されること(標準ライブラリで定義されるものを除く)">ユーザー定義</a>コンストラクタを<code>public</code>から<code>private</code>に移動</li> |
| 302 | +</ul> |
| 303 | +</li> |
296 | 304 | </ul></div> |
297 | 305 |
|
298 | 306 | </div> |
|
0 commit comments