68
68
69
69
</ head >
70
70
< body >
71
- < header data-kunai-mdinfo ="{"meta": {"header": ["mdspan"], "id-type": ["class template"], "namespace": ["std"], "cpp": ["cpp23"]}, "sources": [{"id": "24f9c878ad4fdca1a18cc8019f06a1fe50eaa5d4", "source": "#include <mdspan>\n\nint main()\n{\n // \u56fa\u5b9a\u8981\u7d20\u6570 3x3 \u306e2\u6b21\u5143\u914d\u5217\u30b5\u30a4\u30ba\n std::extents<size_t, 3, 3> ext3x3;\n\n // \u52d5\u7684\u8981\u7d20\u6570\u304b\u3089\u306a\u308b2\u6b21\u5143\u914d\u5217\u30b5\u30a4\u30ba\u3092 4x2 \u3067\u521d\u671f\u5316\n std::dextents<size_t, 2> ext2d{4, 2};\n\n // 2\u500b\u306e\u52d5\u7684\u8981\u7d20\u6570(\u9ad8\u3055,\u5e45)\u3068\u9759\u7684\u8981\u7d20\u6570(RGBA=4)\u304b\u3089\u306a\u308b3\u6b21\u5143\u914d\u5217\u30b5\u30a4\u30ba\n using ColorImageExt = std::extents<size_t, std::dynamic_extent, std::dynamic_extent, 4>;\n ColorImageExt image_ext{128, 128};\n}\n"}], "page_id": ["reference", "mdspan", "extents"]} ">
71
+ < header data-kunai-mdinfo ="{"meta": {"header": ["mdspan"], "id-type": ["class template"], "namespace": ["std"], "cpp": ["cpp23"]}, "sources": [{"id": "72f1b6e9f8e52f61c117c8263d016ed1df87104e", "source": "#include <mdspan>\n\nint main()\n{\n // \u56fa\u5b9a\u8981\u7d20\u6570 3x3 \u306e2\u6b21\u5143\u914d\u5217\u30b5\u30a4\u30ba\n std::extents<size_t, 3, 3> ext3x3;\n\n#if 1\n // \u52d5\u7684\u8981\u7d20\u6570\u304b\u3089\u306a\u308b2\u6b21\u5143\u914d\u5217\u30b5\u30a4\u30ba\u3092 4x2 \u3067\u521d\u671f\u5316\n std::dextents<size_t, 2> ext2d{4, 2};\n#else\n // C++26: dims<2>\u306fdextents<size_t, 2>\u3068\u7b49\u4fa1\n std::dims<2> ext2d{4, 2};\n#endif\n\n // 2\u500b\u306e\u52d5\u7684\u8981\u7d20\u6570(\u9ad8\u3055,\u5e45)\u3068\u9759\u7684\u8981\u7d20\u6570(RGBA=4)\u304b\u3089\u306a\u308b3\u6b21\u5143\u914d\u5217\u30b5\u30a4\u30ba\n using ColorImageExt = std::extents<size_t, std::dynamic_extent, std::dynamic_extent, 4>;\n ColorImageExt image_ext{128, 128};\n}\n"}], "page_id": ["reference", "mdspan", "extents"]} ">
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-01-08T13:35:12 ">
192
- 2024年01月08日 13時35分12秒
191
+ < span itemprop ="datePublished " content ="2024-07-18T10:05:39 ">
192
+ 2024年07月18日 10時05分39秒
193
193
</ span >
194
194
< br />
195
195
< span itemprop ="author " itemscope itemtype ="http://schema.org/Person ">
219
219
220
220
< span class ="k "> template</ span > < span class ="o "> <</ span > < span class ="k "> class</ span > < span class ="nc "> IndexType</ span > < span class ="p "> ,</ span > < span class ="kt "> size_t</ span > < span class ="n "> Rank</ span > < span class ="o "> ></ span >
221
221
< span class ="k "> using</ span > < span class ="n "> dextents</ span > < span class ="o "> =</ span > < span class ="n "> < i > see below</ i > </ span > < span class ="p "> ;</ span >
222
+
223
+ < span class ="k "> template</ span > < span class ="o "> <</ span > < span class ="kt "> size_t</ span > < span class ="n "> Rank</ span > < span class ="p "> ,</ span > < span class ="k "> class</ span > < span class ="nc "> IndexType</ span > < span class ="o "> =</ span > < span class ="kt "> size_t</ span > < span class ="o "> ></ span >
224
+ < span class ="k "> using</ span > < span class ="n "> dims</ span > < span class ="o "> =</ span > < span class ="n "> < i > see below</ i > </ span > < span class ="p "> ;</ span > < span class ="c1 "> // C++26以降</ span >
222
225
< span class ="p "> }</ span >
223
226
</ code > </ pre > </ div >
224
227
</ p >
@@ -242,6 +245,8 @@ <h3>要素数の動的/静的指定</h3>
242
245
< h3 > エイリアステンプレート</ h3 >
243
246
< p > エイリアステンプレート< code > dextents</ code > は、次元数< code > Rank</ code > かつ全次元が動的要素数で指定される< code > extents</ code > を生成する。
244
247
例えば< code > dextents<size_t, 2></ code > は< code > extents<size_t, dynamic_extent, dynamic_extent></ code > の略記となる。</ p >
248
+ < p > C++26では、テンプレートパラメータ< code > IndexType</ code > がデフォルト引数< code > size_t</ code > をもつエイリアステンプレート< code > dims</ code > が追加される。
249
+ 例えば< code > dims<2></ code > は< code > dextents<size_t, 2></ code > と等価であり、< code > extents<size_t, dynamic_extent, dynamic_extent></ code > の略記となる。</ p >
245
250
< h2 > < a class ="cpprefjp-defined-word " data-desc ="満たさなければプログラムが不適格となる要件。`static_assert`や関数のdelete宣言などに相当する "> 適格要件</ a > </ h2 >
246
251
< ul >
247
252
< li > < code > IndexType</ code > は符号付き整数型または符号無し整数型</ li >
@@ -356,15 +361,20 @@ <h2>推論補助</h2>
356
361
</ tbody >
357
362
</ table >
358
363
< h2 > 例</ h2 >
359
- < p > < div class ="yata " id ="24f9c878ad4fdca1a18cc8019f06a1fe50eaa5d4 "> < div class ="codehilite "> < pre > < span > </ span > < code > < span class ="cp "> #include</ span > < span class ="cpf "> < a href ="../mdspan.html "> <mdspan></ a > </ span > < span class ="cp "> </ span >
364
+ < p > < div class ="yata " id ="72f1b6e9f8e52f61c117c8263d016ed1df87104e "> < div class ="codehilite "> < pre > < span > </ span > < code > < span class ="cp "> #include</ span > < span class ="cpf "> < a href ="../mdspan.html "> <mdspan></ a > </ span > < span class ="cp "> </ span >
360
365
361
366
< span class ="kt "> int</ span > < span class ="nf "> main</ span > < span class ="p "> ()</ span >
362
367
< span class ="p "> {</ span >
363
368
< span class ="c1 "> // 固定要素数 3x3 の2次元配列サイズ</ span >
364
369
< span class ="n "> < span style ="color:#ff0000 "> std::extents</ span > </ span > < span class ="o "> <</ span > < span class ="kt "> size_t</ span > < span class ="p "> ,</ span > < span class ="mi "> 3</ span > < span class ="p "> ,</ span > < span class ="mi "> 3</ span > < span class ="o "> ></ span > < span class ="n "> ext3x3</ span > < span class ="p "> ;</ span >
365
370
371
+ < span class ="cp "> #if 1</ span >
366
372
< span class ="c1 "> // 動的要素数からなる2次元配列サイズを 4x2 で初期化</ span >
367
373
< span class ="n "> < span style ="color:#ff0000 "> std::dextents</ span > </ span > < span class ="o "> <</ span > < span class ="kt "> size_t</ span > < span class ="p "> ,</ span > < span class ="mi "> 2</ span > < span class ="o "> ></ span > < span class ="n "> ext2d</ span > < span class ="p "> {</ span > < span class ="mi "> 4</ span > < span class ="p "> ,</ span > < span class ="mi "> 2</ span > < span class ="p "> };</ span >
374
+ < span class ="cp "> #else</ span >
375
+ < span class ="c1 "> // C++26: dims<2>はdextents<size_t, 2>と等価</ span >
376
+ < span class ="n "> < span style ="color:#ff0000 "> std::dims</ span > </ span > < span class ="o "> <</ span > < span class ="mi "> 2</ span > < span class ="o "> ></ span > < span class ="n "> ext2d</ span > < span class ="p "> {</ span > < span class ="mi "> 4</ span > < span class ="p "> ,</ span > < span class ="mi "> 2</ span > < span class ="p "> };</ span >
377
+ < span class ="cp "> #endif</ span >
368
378
369
379
< span class ="c1 "> // 2個の動的要素数(高さ,幅)と静的要素数(RGBA=4)からなる3次元配列サイズ</ span >
370
380
< span class ="k "> using</ span > < span class ="n "> ColorImageExt</ span > < span class ="o "> =</ span > < span class ="n "> < span style ="color:#ff0000 "> std::extents</ span > </ span > < span class ="o "> <</ span > < span class ="kt "> size_t</ span > < span class ="p "> ,</ span > < span class ="n "> < a href ="../span/dynamic_extent.html "> std::dynamic_extent</ a > </ span > < span class ="p "> ,</ span > < span class ="n "> < a href ="../span/dynamic_extent.html "> std::dynamic_extent</ a > </ span > < span class ="p "> ,</ span > < span class ="mi "> 4</ span > < span class ="o "> ></ span > < span class ="p "> ;</ span >
@@ -394,6 +404,10 @@ <h2>参照</h2>
394
404
< ul >
395
405
< li > < a href ="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2022/p0009r18.html " target ="_blank "> P0009R18 MDSPAN</ a > </ li >
396
406
< li > < a href ="https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2022/p2599r2.pdf " target ="_blank "> P2599R2 < code > index_type</ code > & < code > size_type</ code > in < code > mdspan</ code > </ a > </ li >
407
+ < li > < a href ="https://open-std.org/jtc1/sc22/wg21/docs/papers/2024/p2389r2.html " target ="_blank "> P2389R2 < code > dextents</ code > Index Type Parameter</ a > < ul >
408
+ < li > C++26から、エイリアステンプレート< code > dims</ code > が追加される。</ li >
409
+ </ ul >
410
+ </ li >
397
411
</ ul > </ div >
398
412
399
413
</ div >
0 commit comments