The current implementation assumes a member data structure allocated with std::vector<std::byte>. To handle things like memory mapped images, this class needs to handle raw data pointers and custom deallocation functions. To be useful, probably also reference counting.