From Jason Turner

[span.syn]

Diff to HTML by rtfpessoa

Files changed (1) hide show
  1. tmp/tmpwpxxuhnp/{from.md → to.md} +20 -3
tmp/tmpwpxxuhnp/{from.md → to.md} RENAMED
@@ -1,20 +1,37 @@
1
  #### Header `<span>` synopsis <a id="span.syn">[[span.syn]]</a>
2
 
3
  ``` cpp
 
 
 
4
  namespace std {
5
  // constants
6
  inline constexpr size_t dynamic_extent = numeric_limits<size_t>::max();
7
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
8
  // [views.span], class template span
9
  template<class ElementType, size_t Extent = dynamic_extent>
10
- class span;
11
 
12
  template<class ElementType, size_t Extent>
13
- constexpr bool ranges::enable_view<span<ElementType, Extent>> = true;
14
  template<class ElementType, size_t Extent>
15
- constexpr bool ranges::enable_borrowed_range<span<ElementType, Extent>> = true;
16
 
17
  // [span.objectrep], views of object representation
18
  template<class ElementType, size_t Extent>
19
  span<const byte, Extent == dynamic_extent ? dynamic_extent : sizeof(ElementType) * Extent>
20
  as_bytes(span<ElementType, Extent> s) noexcept;
 
1
  #### Header `<span>` synopsis <a id="span.syn">[[span.syn]]</a>
2
 
3
  ``` cpp
4
+ #include <initializer_list> // see [initializer.list.syn]
5
+
6
+ // mostly freestanding
7
  namespace std {
8
  // constants
9
  inline constexpr size_t dynamic_extent = numeric_limits<size_t>::max();
10
 
11
+ template<class T>
12
+ concept integral-constant-like = // exposition only
13
+ is_integral_v<remove_cvref_t<decltype(T::value)>> &&
14
+ !is_same_v<bool, remove_const_t<decltype(T::value)>> &&
15
+ convertible_to<T, decltype(T::value)> &&
16
+ equality_comparable_with<T, decltype(T::value)> &&
17
+ bool_constant<T() == T::value>::value &&
18
+ bool_constant<static_cast<decltype(T::value)>(T()) == T::value>::value;
19
+
20
+ template<class T>
21
+ constexpr size_t maybe-static-ext = dynamic_extent; // exposition only
22
+ template<integral-constant-like T>
23
+ constexpr size_t maybe-static-ext<T> = {T::value};
24
+
25
  // [views.span], class template span
26
  template<class ElementType, size_t Extent = dynamic_extent>
27
+ class span; // partially freestanding
28
 
29
  template<class ElementType, size_t Extent>
30
+ constexpr bool ranges::\libspec{enable_view}{span}<span<ElementType, Extent>> = true;
31
  template<class ElementType, size_t Extent>
32
+ constexpr bool ranges::\libspec{enable_borrowed_range}{span}<span<ElementType, Extent>> = true;
33
 
34
  // [span.objectrep], views of object representation
35
  template<class ElementType, size_t Extent>
36
  span<const byte, Extent == dynamic_extent ? dynamic_extent : sizeof(ElementType) * Extent>
37
  as_bytes(span<ElementType, Extent> s) noexcept;