```
constexpr size_type size() const noexcept;
constexpr size_type length() const noexcept;
```

```
constexpr size_type max_size() const noexcept;
```

```
constexpr void resize(size_type n, charT c);
```

```
constexpr void resize(size_type n);
```

```
constexpr size_type capacity() const noexcept;
```

```
constexpr void reserve(size_type res_arg);
```

Effects: A directive that informs a basic_string of a planned change in size,
so that the storage allocation can be managed accordingly.

After
reserve(),
capacity()
is greater or equal to the argument of
reserve
if reallocation happens; and
equal to the previous value of
capacity()
otherwise.

Reallocation happens at this point if and only if
the current capacity is less than the argument of reserve().

```
constexpr void shrink_to_fit();
```

```
constexpr void clear() noexcept;
```

```
[[nodiscard]] constexpr bool empty() const noexcept;
```