68
68
69
69
</ head >
70
70
< body >
71
- < header data-kunai-mdinfo ="{"meta": {"header": ["tuple"], "namespace": ["std"], "id-type": ["variable"], "cpp": ["cpp11"]}, "sources": [], "page_id": ["reference", "tuple", "ignore"]} ">
71
+ < header data-kunai-mdinfo ="{"meta": {"header": ["tuple"], "namespace": ["std"], "id-type": ["variable"], "cpp": ["cpp11"]}, "sources": [{"id": "0d19b14f32f7aa43a1ea53f53e3ef6bab98dcdac", "source": "#include <iostream>\n#include <tuple>\n#include <string>\n\nstd::tuple<int, char, std::string> f()\n{\n return {1, 'a', \"hello\"};\n}\n\nint main() {\n // char\u8981\u7d20\u306f\u7121\u8996\u3059\u308b\n int a;\n std::string c;\n std::tie(a, std::ignore, c) = f();\n\n std::cout << a << std::endl;\n std::cout << c << std::endl;\n}\n"}, {"id": "7b0f93d4a4cded3ce4d081cfc5ca30be5b062d65", "source": "#include <iostream>\n#include <tuple>\n#include <string>\n\n[[nodiscard]]\nint print_string(std::string s)\n{\n std::cout << s << std::endl;\n return 0;\n}\n\nint main() {\n // \u81ea\u5206\u306e\u7528\u9014\u3067\u306f\u3053\u306e\u95a2\u6570\u306f\u5fc5\u305a\u6210\u529f\u3059\u308b\u305f\u3081\u3001\n // \u623b\u308a\u5024\u3092\u7121\u8996\u3059\u308b\n std::ignore = print_string(\"hello\");\n}\n"}], "page_id": ["reference", "tuple", "ignore"]} ">
72
72
< nav class ="navbar navbar-default " role ="navigation ">
73
73
< div class ="container-fluid ">
74
74
< div class ="navbar-header ">
188
188
189
189
< p class ="text-right "> < small >
190
190
最終更新日時(UTC):
191
- < span itemprop ="datePublished " content ="2024-06-11T13:45:38 ">
192
- 2024年06月11日 13時45分38秒
191
+ < span itemprop ="datePublished " content ="2025-05-15T05:13:05 ">
192
+ 2025年05月15日 05時13分05秒
193
193
</ span >
194
194
< br />
195
195
< span itemprop ="author " itemscope itemtype ="http://schema.org/Person ">
214
214
215
215
< div class ="identifier-type "> variable</ div > < div class ="header "> <tuple></ div > < h1 itemprop ="name "> < span class ="namespace " title ="namespace std "> std::</ span > < span class ="token "> ignore</ span > < span class ="cpp cpp11 " title ="C++11で追加 "> (C++11)</ span > </ h1 >
216
216
< div itemprop ="articleBody "> < p > < div class ="codehilite "> < pre > < span > </ span > < code > < span class ="k "> namespace</ span > < span class ="n "> std</ span > < span class ="p "> {</ span >
217
- < span class ="k "> const</ span > < span class ="n "> < i > unspecified</ i > </ span > < span class ="n "> ignore</ span > < span class ="p "> ;</ span > < span class ="c1 "> // C++11</ span >
218
- < span class ="kr "> inline</ span > < span class ="k "> constexpr</ span > < span class ="n "> < i > unspecified</ i > </ span > < span class ="n "> ignore</ span > < span class ="p "> ;</ span > < span class ="c1 "> // C++17</ span >
217
+ < span class ="k "> struct</ span > < span class ="n "> ignore</ span > < span class ="o "> -</ span > < span class ="n "> type</ span > < span class ="p "> {</ span > < span class ="c1 "> // 説明用の定義 (C++26)</ span >
218
+ < span class ="k "> constexpr</ span > < span class ="k "> const</ span > < span class ="n "> ignore</ span > < span class ="o "> -</ span > < span class ="n "> type</ span > < span class ="o "> &</ span >
219
+ < span class ="k "> operator</ span > < span class ="o "> =</ span > < span class ="p "> (</ span > < span class ="k "> const</ span > < span class ="k "> auto</ span > < span class ="o "> &</ span > < span class ="p "> )</ span > < span class ="k "> const</ span > < span class ="k "> noexcept</ span >
220
+ < span class ="p "> {</ span > < span class ="k "> return</ span > < span class ="o "> *</ span > < span class ="k "> this</ span > < span class ="p "> ;</ span > < span class ="p "> }</ span >
221
+ < span class ="p "> };</ span >
222
+
223
+ < span class ="k "> const</ span > < span class ="n "> < i > unspecified</ i > </ span > < span class ="n "> ignore</ span > < span class ="p "> ;</ span > < span class ="c1 "> // (1) C++11</ span >
224
+ < span class ="kr "> inline</ span > < span class ="k "> constexpr</ span > < span class ="n "> < i > unspecified</ i > </ span > < span class ="n "> ignore</ span > < span class ="p "> ;</ span > < span class ="c1 "> // (1) C++17</ span >
225
+ < span class ="kr "> inline</ span > < span class ="k "> constexpr</ span > < span class ="n "> ignore</ span > < span class ="o "> -</ span > < span class ="n "> type</ span > < span class ="n "> ignore</ span > < span class ="p "> ;</ span > < span class ="c1 "> // (1) C++26</ span >
219
226
< span class ="p "> }</ span >
220
227
</ code > </ pre > </ div >
221
228
</ p >
222
229
< h2 > 概要</ h2 >
223
230
< p > < code > ignore</ code > は、< code > < a href ="tie.html "> tie()</ a > </ code > を使用してタプルから値を抽出する際に、「不要な値」をマーキングするためのプレースホルダーである。</ p >
224
- < p > 使用例は< code > < a href ="tie.html "> tie()</ a > </ code > を参照。</ p >
231
+ < p > そのほか、関数の< a class ="cpprefjp-defined-word " data-desc ="関数呼び出し式の評価結果となるオブジェクト・値 "> 戻り値</ a > を明示的に無視する際にも使用できる。</ p >
232
+ < p > C++26以降は、< code > < a href ="../utility.html "> <utility></ a > </ code > をインクルードして使用することもできる。</ p >
233
+ < h2 > 例</ h2 >
234
+ < h3 > タプルの要素を取り出す際に一部の要素を無視する</ h3 >
235
+ < p > < div class ="yata " id ="0d19b14f32f7aa43a1ea53f53e3ef6bab98dcdac "> < div class ="codehilite "> < pre > < span > </ span > < code > < span class ="cp "> #include</ span > < span class ="cpf "> < a href ="../iostream.html "> <iostream></ a > </ span > < span class ="cp "> </ span >
236
+ < span class ="cp "> #include</ span > < span class ="cpf "> < a href ="../tuple.html "> <tuple></ a > </ span > < span class ="cp "> </ span >
237
+ < span class ="cp "> #include</ span > < span class ="cpf "> < a href ="../string.html "> <string></ a > </ span > < span class ="cp "> </ span >
238
+
239
+ < span class ="n "> < a href ="tuple.html "> std::tuple</ a > </ span > < span class ="o "> <</ span > < span class ="kt "> int</ span > < span class ="p "> ,</ span > < span class ="kt "> char</ span > < span class ="p "> ,</ span > < span class ="n "> < a href ="../string/basic_string.html "> std::string</ a > </ span > < span class ="o "> ></ span > < span class ="n "> f</ span > < span class ="p "> ()</ span >
240
+ < span class ="p "> {</ span >
241
+ < span class ="k "> return</ span > < span class ="p "> {</ span > < span class ="mi "> 1</ span > < span class ="p "> ,</ span > < span class ="sc "> 'a'</ span > < span class ="p "> ,</ span > < span class ="s "> "hello"</ span > < span class ="p "> };</ span >
242
+ < span class ="p "> }</ span >
243
+
244
+ < span class ="kt "> int</ span > < span class ="n "> main</ span > < span class ="p "> ()</ span > < span class ="p "> {</ span >
245
+ < span class ="c1 "> // char要素は無視する</ span >
246
+ < span class ="kt "> int</ span > < span class ="n "> a</ span > < span class ="p "> ;</ span >
247
+ < span class ="n "> < a href ="../string/basic_string.html "> std::string</ a > </ span > < span class ="n "> c</ span > < span class ="p "> ;</ span >
248
+ < span class ="n "> < a href ="tie.html "> std::tie</ a > </ span > < span class ="p "> (</ span > < span class ="n "> a</ span > < span class ="p "> ,</ span > < span class ="n "> < span style ="color:#ff0000 "> std::ignore</ span > </ span > < span class ="p "> ,</ span > < span class ="n "> c</ span > < span class ="p "> )</ span > < span class ="o "> =</ span > < span class ="n "> f</ span > < span class ="p "> ();</ span >
249
+
250
+ < span class ="n "> < a href ="../iostream/cout.html "> std::cout</ a > </ span > < span class ="o "> <<</ span > < span class ="n "> a</ span > < span class ="o "> <<</ span > < span class ="n "> < a href ="../ostream/endl.html "> std::endl</ a > </ span > < span class ="p "> ;</ span >
251
+ < span class ="n "> < a href ="../iostream/cout.html "> std::cout</ a > </ span > < span class ="o "> <<</ span > < span class ="n "> c</ span > < span class ="o "> <<</ span > < span class ="n "> < a href ="../ostream/endl.html "> std::endl</ a > </ span > < span class ="p "> ;</ span >
252
+ < span class ="p "> }</ span >
253
+ </ code > </ pre > </ div >
254
+ </ div > </ p >
255
+ < h4 > 出力</ h4 >
256
+ < p > < pre > < code > 1
257
+ hello
258
+ </ code > </ pre > </ p >
259
+ < h3 > 関数の< a class ="cpprefjp-defined-word " data-desc ="関数呼び出し式の評価結果となるオブジェクト・値 "> 戻り値</ a > を無視する (C++17)</ h3 >
260
+ < p > < div class ="yata " id ="7b0f93d4a4cded3ce4d081cfc5ca30be5b062d65 "> < div class ="codehilite "> < pre > < span > </ span > < code > < span class ="cp "> #include</ span > < span class ="cpf "> < a href ="../iostream.html "> <iostream></ a > </ span > < span class ="cp "> </ span >
261
+ < span class ="cp "> #include</ span > < span class ="cpf "> < a href ="../tuple.html "> <tuple></ a > </ span > < span class ="cp "> </ span >
262
+ < span class ="cp "> #include</ span > < span class ="cpf "> < a href ="../string.html "> <string></ a > </ span > < span class ="cp "> </ span >
263
+
264
+ < span class ="p "> [[</ span > < span class ="n "> nodiscard</ span > < span class ="p "> ]]</ span >
265
+ < span class ="kt "> int</ span > < span class ="n "> print_string</ span > < span class ="p "> (</ span > < span class ="n "> < a href ="../string/basic_string.html "> std::string</ a > </ span > < span class ="n "> s</ span > < span class ="p "> )</ span >
266
+ < span class ="p "> {</ span >
267
+ < span class ="n "> < a href ="../iostream/cout.html "> std::cout</ a > </ span > < span class ="o "> <<</ span > < span class ="n "> s</ span > < span class ="o "> <<</ span > < span class ="n "> < a href ="../ostream/endl.html "> std::endl</ a > </ span > < span class ="p "> ;</ span >
268
+ < span class ="k "> return</ span > < span class ="mi "> 0</ span > < span class ="p "> ;</ span >
269
+ < span class ="p "> }</ span >
270
+
271
+ < span class ="kt "> int</ span > < span class ="n "> main</ span > < span class ="p "> ()</ span > < span class ="p "> {</ span >
272
+ < span class ="c1 "> // 自分の用途ではこの関数は必ず成功するため、</ span >
273
+ < span class ="c1 "> // 戻り値を無視する</ span >
274
+ < span class ="n "> < span style ="color:#ff0000 "> std::ignore</ span > </ span > < span class ="o "> =</ span > < span class ="n "> print_string</ span > < span class ="p "> (</ span > < span class ="s "> "hello"</ span > < span class ="p "> );</ span >
275
+ < span class ="p "> }</ span >
276
+ </ code > </ pre > </ div >
277
+ </ div > </ p >
225
278
< h2 > バージョン</ h2 >
226
279
< h3 > 言語</ h3 >
227
280
< ul >
@@ -239,6 +292,12 @@ <h2>関連項目</h2>
239
292
< li > < code > < a href ="make_tuple.html "> std::make_tuple</ a > </ code > </ li >
240
293
< li > < code > < a href ="forward_as_tuple.html "> std::forward_as_tuple</ a > </ code > </ li >
241
294
< li > < code > < a href ="tie.html "> std::tie</ a > </ code > </ li >
295
+ < li > < a href ="../../lang/cpp17/nodiscard.html "> C++17 < code > [[nodiscard]]</ code > 属性</ a > </ li >
296
+ < li > < a href ="../../lang/cpp26/nice_placeholder_with_no_name.html "> C++26 宣言のみで使用しない変数の名前として< code > _</ code > をサポート</ a > </ li >
297
+ </ ul >
298
+ < h2 > 参照</ h2 >
299
+ < ul >
300
+ < li > < a href ="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2023/p2968r2.html " target ="_blank "> P2968R2 Make < code > std::ignore</ code > a first-class object</ a > </ li >
242
301
</ ul > </ div >
243
302
244
303
</ div >
0 commit comments