From Jason Turner

[mdspan.syn]

Diff to HTML by rtfpessoa

Files changed (1) hide show
  1. tmp/tmpp__ewjzw/{from.md → to.md} +40 -1
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