Let is-extents be the exposition-only variable template
defined as follows:
template<class T>constexprboolis-extents=false; // exposition onlytemplate<class IndexType, size_t... Args>constexprboolis-extents<extents<IndexType, Args...>>=true; // exposition only
Let layout-mapping-alike be the exposition-only concept
defined as follows:
template<class M>conceptlayout-mapping-alike=requires{// exposition onlyrequiresis-extents<typename M::extents_type>;
{ M::is_always_strided()}->same_as<bool>;
{ M::is_always_exhaustive()}->same_as<bool>;
{ M::is_always_unique()}->same_as<bool>;
bool_constant<M::is_always_strided()>::value;
bool_constant<M::is_always_exhaustive()>::value;
bool_constant<M::is_always_unique()>::value;
};
This concept checks that the functions
M::is_always_strided(),
M::is_always_exhaustive(), and
M::is_always_unique() exist,
are constant expressions, and
have a return type of bool.