Disallow wrapping input iterators. Iterator::Next() has this line: if (it_ != end(*self_)) return &*it_++; The reference returned by *it_ doesn't have to be valid after the iterator is incremented; input iterators might create these values on the fly (and don't store them). TGP: https://test.corp.google.com/ui#id=OCL:387627910:BASE:391752438:1629382590029:3d364c60 See also: http://g/c-users/xvDy7spjpeM PiperOrigin-RevId: 392401203