template<class OtherMapping>
friend constexpr bool operator==(const mapping& x, const OtherMapping& y) noexcept;
//operator==により、以下のオーバーロードが使用可能になる
template<class OtherExtents>
friend constexpr bool operator!=(const mapping& x, const OtherMapping& y) noexcept;
概要
mapping
の等値比較を行う。
テンプレートパラメータ制約
layout-mapping-alike<OtherMapping>
を満たすこと。extents_type::rank() == OtherMapping::extents_type::rank()
OtherMapping::is_always_strided() == true
事前条件
OtherMapping
はレイアウトマッピング要件を満たすこと。
戻り値
説明専用の関数OFFSET(m)
を下記の通り定義する:
下記条件を全て満たすとき、true
を返す。そうでなければ、false
を返す。
x.extents() == y.extents()
OFFSET(y) == 0
- 全ての次元
r
においてx.stride(r) == y.stride(y)
例外
投げない
例
#include <cassert>
#include <array>
#include <mdspan>
int main()
{
using Ext4x3x2 = std::extents<size_t, 4, 3, 2>;
std::layout_stride::mapping<Ext4x3x2> map1{{}, std::array{1, 4, 12}};
std::layout_left::mapping<Ext4x3x2> mapL;
assert(map1 == mapL);
std::layout_stride::mapping<Ext4x3x2> map2{{}, std::array{6, 2, 1}};
std::layout_right::mapping<Ext4x3x2> mapR;
assert(map2 == mapR);
}
xxxxxxxxxx
#include <cassert>
#include <array>
#include <mdspan>
int main()
{
using Ext4x3x2 = std::extents<size_t, 4, 3, 2>;
std::layout_stride::mapping<Ext4x3x2> map1{{}, std::array{1, 4, 12}};
std::layout_left::mapping<Ext4x3x2> mapL;
assert(map1 == mapL);
std::layout_stride::mapping<Ext4x3x2> map2{{}, std::array{6, 2, 1}};
std::layout_right::mapping<Ext4x3x2> mapR;
assert(map2 == mapR);
}
出力
バージョン
言語
- C++23
処理系
- Clang: ??
- GCC: ??
- ICC: ??
- Visual C++: ??