tmp/tmpp__ewjzw/{from.md → to.md}
RENAMED
|
@@ -1,28 +1,67 @@
|
|
| 1 |
#### Header `<mdspan>` synopsis <a id="mdspan.syn">[[mdspan.syn]]</a>
|
| 2 |
|
| 3 |
``` cpp
|
|
|
|
| 4 |
namespace std {
|
| 5 |
// [mdspan.extents], class template extents
|
| 6 |
template<class IndexType, size_t... Extents>
|
| 7 |
class extents;
|
| 8 |
|
| 9 |
// [mdspan.extents.dextents], alias template dextents
|
| 10 |
template<class IndexType, size_t Rank>
|
| 11 |
using dextents = see below;
|
| 12 |
|
|
|
|
|
|
|
|
|
|
|
|
|
| 13 |
// [mdspan.layout], layout mapping
|
| 14 |
struct layout_left;
|
| 15 |
struct layout_right;
|
| 16 |
struct layout_stride;
|
|
|
|
|
|
|
|
|
|
|
|
|
| 17 |
|
| 18 |
// [mdspan.accessor.default], class template default_accessor
|
| 19 |
template<class ElementType>
|
| 20 |
class default_accessor;
|
| 21 |
|
|
|
|
|
|
|
|
|
|
|
|
|
| 22 |
// [mdspan.mdspan], class template mdspan
|
| 23 |
template<class ElementType, class Extents, class LayoutPolicy = layout_right,
|
| 24 |
class AccessorPolicy = default_accessor<ElementType>>
|
| 25 |
-
class mdspan;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 26 |
}
|
| 27 |
```
|
| 28 |
|
|
|
|
| 1 |
#### Header `<mdspan>` synopsis <a id="mdspan.syn">[[mdspan.syn]]</a>
|
| 2 |
|
| 3 |
``` cpp
|
| 4 |
+
// mostly freestanding
|
| 5 |
namespace std {
|
| 6 |
// [mdspan.extents], class template extents
|
| 7 |
template<class IndexType, size_t... Extents>
|
| 8 |
class extents;
|
| 9 |
|
| 10 |
// [mdspan.extents.dextents], alias template dextents
|
| 11 |
template<class IndexType, size_t Rank>
|
| 12 |
using dextents = see below;
|
| 13 |
|
| 14 |
+
// [mdspan.extents.dims], alias template dims
|
| 15 |
+
template<size_t Rank, class IndexType = size_t>
|
| 16 |
+
using dims = see below;
|
| 17 |
+
|
| 18 |
// [mdspan.layout], layout mapping
|
| 19 |
struct layout_left;
|
| 20 |
struct layout_right;
|
| 21 |
struct layout_stride;
|
| 22 |
+
template<size_t PaddingValue = dynamic_extent>
|
| 23 |
+
struct layout_left_padded;
|
| 24 |
+
template<size_t PaddingValue = dynamic_extent>
|
| 25 |
+
struct layout_right_padded;
|
| 26 |
|
| 27 |
// [mdspan.accessor.default], class template default_accessor
|
| 28 |
template<class ElementType>
|
| 29 |
class default_accessor;
|
| 30 |
|
| 31 |
+
// [mdspan.accessor.aligned], class template aligned_accessor
|
| 32 |
+
template<class ElementType, size_t ByteAlignment>
|
| 33 |
+
class aligned_accessor;
|
| 34 |
+
|
| 35 |
// [mdspan.mdspan], class template mdspan
|
| 36 |
template<class ElementType, class Extents, class LayoutPolicy = layout_right,
|
| 37 |
class AccessorPolicy = default_accessor<ElementType>>
|
| 38 |
+
class mdspan; // partially freestanding
|
| 39 |
+
|
| 40 |
+
// [mdspan.sub], submdspan creation
|
| 41 |
+
template<class OffsetType, class LengthType, class StrideType>
|
| 42 |
+
struct strided_slice;
|
| 43 |
+
|
| 44 |
+
template<class LayoutMapping>
|
| 45 |
+
struct submdspan_mapping_result;
|
| 46 |
+
|
| 47 |
+
struct full_extent_t { explicit full_extent_t() = default; };
|
| 48 |
+
inline constexpr full_extent_t full_extent{};
|
| 49 |
+
|
| 50 |
+
template<class IndexType, size_t... Extents, class... SliceSpecifiers>
|
| 51 |
+
constexpr auto submdspan_extents(const extents<IndexType, Extents...>&, SliceSpecifiers...);
|
| 52 |
+
|
| 53 |
+
// [mdspan.sub.sub], submdspan function template
|
| 54 |
+
template<class ElementType, class Extents, class LayoutPolicy,
|
| 55 |
+
class AccessorPolicy, class... SliceSpecifiers>
|
| 56 |
+
constexpr auto submdspan(
|
| 57 |
+
const mdspan<ElementType, Extents, LayoutPolicy, AccessorPolicy>& src,
|
| 58 |
+
SliceSpecifiers... slices) -> see below;
|
| 59 |
+
|
| 60 |
+
template<class T, class IndexType>
|
| 61 |
+
concept index-pair-like = // exposition only
|
| 62 |
+
pair-like<T> &&
|
| 63 |
+
convertible_to<tuple_element_t<0, T>, IndexType> &&
|
| 64 |
+
convertible_to<tuple_element_t<1, T>, IndexType>;
|
| 65 |
}
|
| 66 |
```
|
| 67 |
|