Я был бы очень признателен, если бы кто-нибудь подтвердил мой образ мышления/показывал мне это Что-то я пропустил
https://github.com/google/flatbuffers/b ... ctor.h#L80
Код: Выделить всё
difference_type operator-(const VectorIterator &other) const {
return (data_ - other.data_) / element_stride;
}
difference_type == std::ptrdiff_t, который основан на стандартном Signed ["something" > = 16b] (https://en.cppreference.com/w/cpp/types/ptrdiff_t)
Будем ожидать, что первая скобка окажется отрицательной (что должно быть допустимый вариант использования)
- Теперь, когда я предполагаю, что ptrdiff_t равен size_t
- применяются практически те же шаги, за исключением последнего:
на основе стандарта (8/11.5.4), второй операнд деления преобразуется в знаковое число большего битового размера. - это приводит к тому, что возвращаемое значение становится (интуитивно понятным) отрицательным числом, которое указывает расстояние между два VectorIterator.
- применяются практически те же шаги, за исключением последнего:
Спасибо!
Подробнее здесь: https://stackoverflow.com/questions/793 ... d-behavior
Мобильная версия