constexpr bool is_exhaustive() const noexcept;
概要
レイアウトマッピングのExhaustive特性を取得する。
戻り値
- 次のいずれかのとき、
trueを返す。rank_ == 0である- C++26 : 多次元インデックス空間
extents()のサイズが0である
- そうでなければ、取りうる全ての多次元インデックス値に対応する要素位置を考えたとき、アクセスされうる要素位置に隙間が生じないならば
trueを返す。 - そうでなければ、
falseを返す。
例外
投げない
例
#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{3, 1}};
assert(map1.is_exhaustive());
Mapping map2{{}, std::array{4, 1}};
assert(not map2.is_exhaustive());
}
出力
バージョン
言語
- C++23
処理系
- Clang: ??
- GCC: ??
- ICC: ??
- Visual C++: ??
参照
- P0009R18 MDSPAN
- LWG Issue 4266.
layout_stride::mappingshould treat empty mappings as exhaustive- C++26で、多次元インデックス空間が空(サイズが
0)の場合もtrueを返すよう戻り値の条件が拡張された。あわせてis_always_exhaustive()もrank() == 0や静的要素数0の次元を持つ場合にtrueを返すよう変更された
- C++26で、多次元インデックス空間が空(サイズが