diff --git a/src/util/membuffer.h b/src/util/membuffer.h index d63de264..9f18b999 100644 --- a/src/util/membuffer.h +++ b/src/util/membuffer.h @@ -55,6 +55,17 @@ public: // HINT: for fully bound-checked pointer use XSPAN_S from xspan.h operator pointer() const noexcept { return ptr; } + // array access + reference operator[](ptrdiff_t i) const may_throw { + if very_unlikely (i < 0 || mem_size(sizeof(element_type), i) >= size_in_bytes) + throwCantPack("MemBuffer invalid index %td (%u bytes)", i, size_in_bytes); + return ptr[i]; + } + // dereference + reference operator*() const DELETED_FUNCTION; + // arrow operator + pointer operator->() const DELETED_FUNCTION; + // membuffer + n -> pointer template typename std::enable_if::value, pointer>::type operator+(U n) const {