[range.approximately.sized]

[Note 1: 

ranges​::​reserve_hint(t) is otherwise not required to be well-defined after evaluating ranges​::​begin(t).

For example, it is possible for ranges​::​reserve_hint(t) to be well-defined for an approximately_sized_range whose iterator type does not model forward_iterator only if evaluated before the first call to ranges​::​begin(t).

— end note]