constexpr index_type required_span_size() const noexcept;
概要
メモリブロックに対する要素アクセス範囲を取得する。
説明用の関数REQUIRED-SPAN-SIZE(e, strides)
を次のように定義する
e.rank() == 0
のとき値1
- そうでなければ、多次元インデクス空間
e
のサイズが0のとき値0
- そうでなければ、半開区間
[0, e.rank())
の全てのr
に対して(e.extent(r) - 1)
とextents_type::index-cast(strides_[r])
を乗じた値の総和に1
を加算した値
戻り値
説明専用のメンバ変数extents_
, strides_
に対して、REQUIRED-SPAN-SIZE(extents_, strides_)
を返す。
例外
投げない
例
#include <cassert>
#include <array>
#include <mdspan>
int main()
{
using Ext2x3 = std::extents<size_t, 2, 3>;
using Mapping = std::layout_stride::mapping<Ext2x3>;
Mapping map1{{}, std::array{4, 1}};
assert(map1.required_span_size() == 7);
// map1(i,j):
// i/j ->
// | 1 2 3 (4)
// V 5 6 7 -
Mapping map2{{}, std::array{2, 3}};
assert(map2.required_span_size() == 9);
// map2(i,j):
// i/j ->
// | 1 4 7
// V (2) (5) (8)
// 3 6 9
}
出力
バージョン
言語
- C++23
処理系
- Clang: ??
- GCC: ??
- ICC: ??
- Visual C++: ??