#include <cstdint>
template<typename T>
class span {
T* ptr_;
std::size_t len_;
public:
using value_type = std::remove_cv_t<T>; //primarily needed if used with templates
span(T* ptr, std::size_t len) noexcept : ptr_{ptr}, len_{len} {}
T& operator[](int i) noexcept { return *ptr_[i]; }
T const& operator[](int i) const noexcept { return *ptr_[i]; }
bool empty() const noexcept { return len_ == 0; }
auto size() const noexcept { return len_; }
auto begin() noexcept { return ptr_; }
auto begin() const noexcept { return ptr_; }
auto end() noexcept { return ptr_ + len_; }
auto end() const noexcept { return ptr_ + len_; }
};
static_assert(_MSVC_LANG <= 201703L, "Remember to switch to std::span");
Comments
0 B
|👍
/👎
0 B
|0 👍
/0 👎