[libc++] Fix common_iterator for output_iterators
authorLouis Dionne <ldionne.2@gmail.com>
Tue, 18 Jan 2022 17:10:14 +0000 (12:10 -0500)
committerLouis Dionne <ldionne.2@gmail.com>
Thu, 27 Jan 2022 15:57:04 +0000 (10:57 -0500)
commit0902eb30ad714da3ed6c6a744337c9b52427f366
tree5a4c6686d95630c010eb561f0be117080dc7646e
parentdad2b6e797df82c9ea5377394e09aacf6d824560
[libc++] Fix common_iterator for output_iterators

We were missing a constraint in common_iterator's iterator_traits and
we were eagerly instantiating iter_value_t even when invalid.

Thanks to Casey Carter for finding this bug.

Differential Revision: https://reviews.llvm.org/D117449
libcxx/include/__iterator/common_iterator.h
libcxx/test/std/iterators/predef.iterators/iterators.common/iterator_traits.compile.pass.cpp
libcxx/test/std/iterators/predef.iterators/iterators.common/plus_plus.pass.cpp
libcxx/test/std/iterators/predef.iterators/iterators.common/types.h