Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #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");
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement