Changing it to: const PositionPair *end() const { return data.empty() ? nullptr : &data.back() + 1; } works fine. EDIT: Also change begin() to check for empty vector: const PositionPair * begin() const { return data.empty() ? nullptr : &data.front(); }