in fatal/codec/varint.h [268:292]
TOutputIterator operator ()(
TOutputIterator begin,
TOutputIterator const end
) noexcept {
using traits = detail::varint_impl::data_traits<
typename std::iterator_traits<TOutputIterator>::value_type
>;
using unsigned_unit = typename traits::unsigned_unit;
for (; begin != end; std::advance(begin, 1)) {
unsigned_unit data = value_ & traits::filter_mask::value;
value_ >>= traits::payload_size::value;
if (value_) {
*begin = traits::to(data | traits::continuation_bit::value);
} else {
*begin = traits::to(data);
continued_ = false;
return std::next(begin);
}
}
return begin;
}