So like a std::deque? If the block size varies then lookup will be O(log B) where B is the number of blocks.
Of course you have the option to just not do that in your code, but it's nice to have a hard guarantee that this can never happen, even by accident. I could have used a deque as a backend and wrapped it in the class, though.