# cpp20::span

## Summary

| ### Constructors and Destructors ||
|---|---|
| `https://fuchsia.dev/reference/cpp/other/singletoncpp20/span#singletoncpp20_1_1span_1a8e86eb3009a5396943211cbba7837cc8()` ||
| `https://fuchsia.dev/reference/cpp/other/singletoncpp20/span#singletoncpp20_1_1span_1acd3ce2db34fa7447e6d4e67b6beab87b(It first, size_type count)` ||
| `https://fuchsia.dev/reference/cpp/other/singletoncpp20/span#singletoncpp20_1_1span_1acd3ce2db34fa7447e6d4e67b6beab87b(It first, size_type count)` ||
| `https://fuchsia.dev/reference/cpp/other/singletoncpp20/span#singletoncpp20_1_1span_1aee510d01180bd8c837e48c01844a65e2(It first, End end)` ||
| `https://fuchsia.dev/reference/cpp/other/singletoncpp20/span#singletoncpp20_1_1span_1aee510d01180bd8c837e48c01844a65e2(It first, End end)` ||
| `https://fuchsia.dev/reference/cpp/other/singletoncpp20/span#singletoncpp20_1_1span_1afc3bb51e08f224b7fcac79d9389ea086(element_type(&) arr[N])` ||
| `https://fuchsia.dev/reference/cpp/other/singletoncpp20/span#singletoncpp20_1_1span_1a1613d1d7777c1d5b1e0f72c8863b4dc2(U(&) arr[N])` ||
| `https://fuchsia.dev/reference/cpp/other/singletoncpp20/span#singletoncpp20_1_1span_1a4f51954c2f58e1d57a181ae7ed4c5279(std::array< U, N > & arr)` ||
| `https://fuchsia.dev/reference/cpp/other/singletoncpp20/span#singletoncpp20_1_1span_1a5027480288a94e7f00aaabb75260c353(const std::array< U, N > & arr)` ||
| `https://fuchsia.dev/reference/cpp/other/singletoncpp20/span#singletoncpp20_1_1span_1a96bea8c51f84f050c480b8d482f18c54(R && r)` ||
| `https://fuchsia.dev/reference/cpp/other/singletoncpp20/span#singletoncpp20_1_1span_1a96bea8c51f84f050c480b8d482f18c54(R && r)` ||
| `https://fuchsia.dev/reference/cpp/other/singletoncpp20/span#singletoncpp20_1_1span_1adc2ec1379f77e790aa82de94ecef1ae2(const https://fuchsia.dev/reference/cpp/other/singletoncpp20/span#singletoncpp20_1_1span< U, N > & s)` ||
| `https://fuchsia.dev/reference/cpp/other/singletoncpp20/span#singletoncpp20_1_1span_1adc2ec1379f77e790aa82de94ecef1ae2(const https://fuchsia.dev/reference/cpp/other/singletoncpp20/span#singletoncpp20_1_1span< U, N > & s)` ||
| `https://fuchsia.dev/reference/cpp/other/singletoncpp20/span#singletoncpp20_1_1span_1a85acdbf2bd15344b33051a6ec92f786b(const https://fuchsia.dev/reference/cpp/other/singletoncpp20/span#singletoncpp20_1_1span & s)` ||
| `https://fuchsia.dev/reference/cpp/other/singletoncpp20/span#singletoncpp20_1_1span_1a0ef5b3e99edebeb1d396c8f91c0d22e6()` ||

| ### Public types ||
|---|---|
| `https://fuchsia.dev/reference/cpp/other/singletoncpp20/span#singletoncpp20_1_1span_1a343ab6ba16f6f6e80a67ab4665072303` | using `const T *` |
| `https://fuchsia.dev/reference/cpp/other/singletoncpp20/span#singletoncpp20_1_1span_1a5d4c9356eaf190609f6a05e327d0f366` | using `const T &` |
| `https://fuchsia.dev/reference/cpp/other/singletoncpp20/span#singletoncpp20_1_1span_1a6e02f0f935f4be98b3435894386f32db` | using `ptrdiff_t` |
| `https://fuchsia.dev/reference/cpp/other/singletoncpp20/span#singletoncpp20_1_1span_1a494037aaa2cc6f7cbd63a94cd81b441c` | using `T` |
| `https://fuchsia.dev/reference/cpp/other/singletoncpp20/span#singletoncpp20_1_1span_1a5df4cf70509d6119d558539d1b66b03b` | using `internal::span_iterator< T >` |
| `https://fuchsia.dev/reference/cpp/other/singletoncpp20/span#singletoncpp20_1_1span_1af10f28f2e06a404db11ec29f7b421ff3` | using `T *` |
| `https://fuchsia.dev/reference/cpp/other/singletoncpp20/span#singletoncpp20_1_1span_1afcd7ce71b0643569f2154b446bcbc205` | using `T &` |
| `https://fuchsia.dev/reference/cpp/other/singletoncpp20/span#singletoncpp20_1_1span_1ae45f2c122e726263bc24b69f498e7049` | using `std::reverse_iterator< iterator >` |
| `https://fuchsia.dev/reference/cpp/other/singletoncpp20/span#singletoncpp20_1_1span_1a95fa0ee2116963340f67c32b6221765f` | using `size_t` |
| `https://fuchsia.dev/reference/cpp/other/singletoncpp20/span#singletoncpp20_1_1span_1abcac99d67eead3cd3a7d9221bab61b2e` | using `std::remove_cv_t< T >` |

| ### Public static attributes ||
|---|---|
| `https://fuchsia.dev/reference/cpp/other/singletoncpp20/span#singletoncpp20_1_1span_1a13527649ce3b318871f448c91b4eebb3 = Extent` | `constexpr size_t` |

| ### Public functions ||
|---|---|
| `https://fuchsia.dev/reference/cpp/other/singletoncpp20/span#singletoncpp20_1_1span_1ace25bd6e09361ed011ccf805cf4589d0() const ` | `constexpr reference` |
| `https://fuchsia.dev/reference/cpp/other/singletoncpp20/span#singletoncpp20_1_1span_1a18df19e928adcc8333d6ea0298dfef73() const noexcept` | `constexpr iterator` |
| `https://fuchsia.dev/reference/cpp/other/singletoncpp20/span#singletoncpp20_1_1span_1a7c1b0b9b19e433888f53930394c20cdc() const noexcept` | `constexpr pointer` |
| `https://fuchsia.dev/reference/cpp/other/singletoncpp20/span#singletoncpp20_1_1span_1a72ade0de959ae4b09a8fa631e9356137() const ` | `constexpr bool` |
| `https://fuchsia.dev/reference/cpp/other/singletoncpp20/span#singletoncpp20_1_1span_1a1e48dfd6a14ffa684d031fe397b0e410() const noexcept` | `constexpr iterator` |
| `https://fuchsia.dev/reference/cpp/other/singletoncpp20/span#singletoncpp20_1_1span_1aeba04ca35bcf3aa2c4a094d9d8df99f6() const ` | `constexpr reference` |
| `https://fuchsia.dev/reference/cpp/other/singletoncpp20/span#singletoncpp20_1_1span_1ae06f99d5c0de51505c9760f4dd58a3c9(const https://fuchsia.dev/reference/cpp/other/singletoncpp20/span#singletoncpp20_1_1span & s) noexcept=default` | `constexpr https://fuchsia.dev/reference/cpp/other/singletoncpp20/span#singletoncpp20_1_1span &` |
| `https://fuchsia.dev/reference/cpp/other/singletoncpp20/span#singletoncpp20_1_1span_1ade986373320de4414f36cc9f27d3f884(size_type index) const ` | `constexpr reference` |
| `https://fuchsia.dev/reference/cpp/other/singletoncpp20/span#singletoncpp20_1_1span_1a8244f8e225e4381da6e27a8dc7f74862() const noexcept` | `constexpr reverse_iterator` |
| `https://fuchsia.dev/reference/cpp/other/singletoncpp20/span#singletoncpp20_1_1span_1ad56765537506b442b549ab13b8a4cfe6() const noexcept` | `constexpr reverse_iterator` |
| `https://fuchsia.dev/reference/cpp/other/singletoncpp20/span#singletoncpp20_1_1span_1aa47d33acfe38b1c1d74d6c67bb6ba4a6() const noexcept` | `constexpr size_type` |
| `https://fuchsia.dev/reference/cpp/other/singletoncpp20/span#singletoncpp20_1_1span_1a358a5c7ec1dcc01d186e004ca49221f6() const noexcept` | `constexpr size_type` |
| `https://fuchsia.dev/reference/cpp/other/singletoncpp20/span#singletoncpp20_1_1span_1a0227b94ed0c8c0ae5aa2391328e0dbb4(size_type offset, size_type count) const ` | `constexpr https://fuchsia.dev/reference/cpp/other/singletoncpp20/span#singletoncpp20_1_1span< element_type, dynamic_extent >` |
| `https://fuchsia.dev/reference/cpp/other/singletoncpp20/span#singletoncpp20_1_1span_1aa0d16678493b40927030789e639a861c() const ` | `constexpr https://fuchsia.dev/reference/cpp/other/singletoncpp20/span#singletoncpp20_1_1span< element_type, E >` |

## Public types

### const_pointer

```c++
const T * const_pointer
```

### const_reference

```c++
const T & const_reference
```

### difference_type

```c++
ptrdiff_t difference_type
```

### element_type

```c++
T element_type
```

### iterator

```c++
internal::span_iterator< T > iterator
```

### pointer

```c++
T * pointer
```

### reference

```c++
T & reference
```

### reverse_iterator

```c++
std::reverse_iterator< iterator > reverse_iterator
```

### size_type

```c++
size_t size_type
```

### value_type

```c++
std::remove_cv_t< T > value_type
```

## Public static attributes

### extent

```c++
constexpr size_t extent = Extent
```

## Public functions

### back

```c++
constexpr reference back() const 
```

### begin

```c++
constexpr iterator begin() const noexcept
```

### data

```c++
constexpr pointer data() const noexcept
```

### empty

```c++
constexpr bool empty() const 
```

### end

```c++
constexpr iterator end() const noexcept
```

### front

```c++
constexpr reference front() const 
```

### operator=

```c++
constexpr span & operator=(
  const span & s
) noexcept=default
```

### operator\[\]

```c++
constexpr reference operator[](
  size_type index
) const 
```

### rbegin

```c++
constexpr reverse_iterator rbegin() const noexcept
```

### rend

```c++
constexpr reverse_iterator rend() const noexcept
```

### size

```c++
constexpr size_type size() const noexcept
```

### size_bytes

```c++
constexpr size_type size_bytes() const noexcept
```

### span

```c++
constexpr span() noexcept
```

### span

```c++
constexpr span(
  It first,
  size_type count
)
```

### span

```c++
constexpr span(
  It first,
  size_type count
)
```

### span

```c++
constexpr span(
  It first,
  End end
)
```

### span

```c++
constexpr span(
  It first,
  End end
)
```

### span

```c++
constexpr span(
  element_type(&) arr[N]
) noexcept
```

### span

```c++
constexpr span(
  U(&) arr[N]
) noexcept
```

### span

```c++
constexpr span(
  std::array< U, N > & arr
) noexcept
```

### span

```c++
constexpr span(
  const std::array< U, N > & arr
) noexcept
```

### span

```c++
constexpr span(
  R && r
)
```

### span

```c++
constexpr span(
  R && r
)
```

### span

```c++
constexpr span(
  const cpp20::span< U, N > & s
) noexcept
```

### span

```c++
constexpr span(
  const cpp20::span< U, N > & s
) noexcept
```

### span

```c++
constexpr span(
  const span & s
) noexcept=default
```

### subspan

```c++
constexpr span< element_type, dynamic_extent > subspan(
  size_type offset,
  size_type count
) const 
```

### subspan

```c++
constexpr span< element_type, E > subspan() const 
```

### \~span

```c++
 ~span() noexcept=default
```