virtual TBASE& at(size_t x, size_t y) { return static_cast<TBASE &>(storage->at(x, y)); }
virtual TBASE& at(Index idx) { return static_cast<TBASE &>(storage->at(idx)); }
virtual const TBASE& at(size_t x, size_t y) const { return static_cast<const TBASE &>(storage->at(x, y)); }
virtual const TBASE& at(Index idx) const { return static_cast<const TBASE &>(storage->at(idx)); }