@@ -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