Utilities

span

template<typename T>
class span

A non-owning contiguous array of objects.

This is useful for providing access to raw data without leaking how data is managed.

The interface is a subset of std::vector and std::array.

The implementation closely follows the design of std::span <>_ (since C++20).

string

template<std::size_t N>
class string

A fixed-length string buffer with automatic conversion to/from std::string_view.

This is useful for managing fixed length arrays as if they were string-like. Typically used to avoid heap allocations, e.g. stack allocated structs used for messaging.

This is a higher level abstraction than std::array to provide more * string-specific features. The interface is a subset of std::string and std::string_view.