Skip to content

Commit 0ed791c

Browse files
committed
mdspan/dims: C++26 P2389R2対応
1 parent 4baab1d commit 0ed791c

File tree

2 files changed

+15
-0
lines changed

2 files changed

+15
-0
lines changed

reference/mdspan.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
|------|------|-------|
1212
| [`extents`](mdspan/extents.md) | 多次元配列のサイズを表す値 (class template) | C++23 |
1313
| [`dextents`](mdspan/extents.md) | 全次元が動的な多次元配列のサイズを表す値 (alias template) | C++23 |
14+
| [`dims`](mdspan/extents.md) | 全次元が動的な多次元配列のサイズを表す値 (alias template) | C++26 |
1415

1516

1617
## レイアウトマッピング

reference/mdspan/extents.md

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,9 @@ namespace std {
1111

1212
template<class IndexType, size_t Rank>
1313
using dextents = see below;
14+
15+
template<size_t Rank, class IndexType = size_t>
16+
using dims = see below; // C++26以降
1417
}
1518
```
1619
* see below[italic]
@@ -43,6 +46,9 @@ array<IndexType, rank_dynamic()> dynamic-extents;
4346
エイリアステンプレート`dextents`は、次元数`Rank`かつ全次元が動的要素数で指定される`extents`を生成する。
4447
例えば`dextents<size_t, 2>``extents<size_t, dynamic_extent, dynamic_extent>`の略記となる。
4548

49+
C++26では、テンプレートパラメータ`IndexType`がデフォルト引数`size_t`をもつエイリアステンプレート`dims`が追加される。
50+
例えば`dims<2>``dextents<size_t, 2>`と等価であり、`extents<size_t, dynamic_extent, dynamic_extent>`の略記となる。
51+
4652

4753
## 適格要件
4854

@@ -95,8 +101,13 @@ int main()
95101
// 固定要素数 3x3 の2次元配列サイズ
96102
std::extents<size_t, 3, 3> ext3x3;
97103

104+
#if 1
98105
// 動的要素数からなる2次元配列サイズを 4x2 で初期化
99106
std::dextents<size_t, 2> ext2d{4, 2};
107+
#else
108+
// C++26: dims<2>はdextents<size_t, 2>と等価
109+
std::dims<2> ext2d{4, 2};
110+
#endif
100111

101112
// 2個の動的要素数(高さ,幅)と静的要素数(RGBA=4)からなる3次元配列サイズ
102113
using ColorImageExt = std::extents<size_t, std::dynamic_extent, std::dynamic_extent, 4>;
@@ -105,6 +116,7 @@ int main()
105116
```
106117
* std::extents[color ff0000]
107118
* std::dextents[color ff0000]
119+
* std::dims[color ff0000]
108120

109121
### 出力
110122
```
@@ -129,3 +141,5 @@ int main()
129141
## 参照
130142
- [P0009R18 MDSPAN](https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2022/p0009r18.html)
131143
- [P2599R2 `index_type` & `size_type` in `mdspan`](https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2022/p2599r2.pdf)
144+
- [P2389R2 `dextents` Index Type Parameter](https://open-std.org/jtc1/sc22/wg21/docs/papers/2024/p2389r2.html)
145+
- C++26から、エイリアステンプレート`dims`が追加される。

0 commit comments

Comments
 (0)