#pragma once #include namespace gp{ template class array{ T ary[sz]; public: using associated_iterator = typename buffer::associated_iterator; constexpr T& operator[] (size_t off) { return ary[off]; } constexpr size_t size() const { return sz; } constexpr associated_iterator begin() const { return gp::buffer{(T*)ary, (T*)ary+sz}.begin(); } constexpr associated_iterator end() const { return gp::buffer{(T*)ary, (T*)ary+sz}.end(); } constexpr bool operator==(const array& oth) const { for(size_t idx = 0; idx as_buffer() { return gp::buffer{(T*)ary, (T*)ary+sz}; } }; }