Iros
 
Loading...
Searching...
No Matches
md_layout.h
Go to the documentation of this file.
1#pragma once
2
3#include "di/meta/compare.h"
4#include "di/meta/core.h"
7
8namespace di::concepts {
9namespace detail {
10 template<typename Layout, typename Mapping>
12}
13
14template<typename M>
15concept MDLayoutMapping = Copyable<M> && EqualityComparable<M> && requires(M const m) {
16 typename M::ExtentsType;
17 typename M::SizeType;
18 typename M::RankType;
19 typename M::LayoutType;
20
22 { m.required_span_size() } -> SameAs<typename M::SizeType>;
23 { m.is_unique() } -> SameAs<bool>;
24 { m.is_exhaustive() } -> SameAs<bool>;
25 { m.is_strided() } -> SameAs<bool>;
26
27 { M::is_always_unique() } -> SameAs<bool>;
28 { M::is_always_exhaustive() } -> SameAs<bool>;
29 { M::is_always_strided() } -> SameAs<bool>;
30};
31
32template<typename T, typename Extents>
33concept MDLayout = concepts::Extents<Extents> && requires { typename T::template Mapping<Extents>; } &&
35}
Definition operations.h:40
Definition compare.h:82
Definition extents.h:17
Definition md_layout.h:15
Definition md_layout.h:33
Definition core.h:114
Definition md_layout.h:11
Definition impl.h:7
Definition any_storable.h:9