| Document number: | N4686 |
| Date: | 2017-07-31 |
| Project: | C++ Extensions for Ranges |
| Reply-to: |
Casey Carter <Casey@Carter.net> |
constexpr for <experimental/ranges/iterator>)tagged<Base...> should be implicitly constructible from Basestd into std::experimental::ranges::v1i++ for InputIteratorscommon_type from P0022iter_move and iter_swapswap(*a,*b) instead iter_swap(a,b), and move(*a) instead of iter_move(a)is_swappable type traits should not be in namespace stdindirect_result_ofRegularInvocablevalue_type of classes with member element_typeinsert_iterator and ostreambuf_iterator don’t properly support *o++ = t;InputIterator to support proxy iteratorssort/stable_sort/partial_sort/nth_elementCommon and CommonReference should use ConvertibleTo to test for implicit convertibilitycopy_if “Returns” clause incorrectis_nothrow_indirectly_movable could be true even when iter_move is noexcept(false)common_iterator::operator-> does not specify its return typeIteratorRange doesn’t require begintransform does not include projection calls in ComplexityDestructible?RandomAccessIteratorConvertibleTo should require both implicit and explicit conversionunique_copy and LWG 2439Swappable concept and P0185 swappable traitsreplace and replace_if<experimental/range/range>Assignable concept looks wrongcommon_iterator’s copy/move ctors/operators need to be specified?DerivedFrom should be “publicly and unambiguously”constexpr to advance, distance, next, and previter_move and iter_swap need to say when they are noexcept and constexpr[iterator, count) rangescommon_iterator::operator-> with xvalue operator*DefaultConstructible?Constructible<int&, long&>() is true?Movable<int&&>() is true and it should probably be falseMoveConstructible<T>() != std::is_move_constructible<T>()ConvertibleTo<T&&, U> should say something about the final state of the source objectranges::exchange should be constexpr and conditionally noexceptcommon_reference doesn’t work with some proxy referencesconst-qualified iterator types are not Readable or WritableOutputIterator’s writable post-increment resultcommon_iterator::operator-> is underconstrainedadvance, distance, next, and prev should be customization point objectscommon_iterator’s and counted_iterator’s const operator* need to be constrainedReadable types with prvalue reference types erroneously model Writable& in Destructiblecounted_iterator’s postincrementWritable should work with rvaluesSizedRange should not require size() to be callable on a const qualified objectAssignable semantic constraints contradict each other for self-assignReadableistreambuf_iterator::operator->find_first_of and mismatch should use IndirectRelation instead of Indirect(Binary)Predicateis_[nothrow]_indirectly_(movable|swappable)common_type with C++17’s [meta.trans.other]/p4common_type, the Ranges TS requires vendors to break conformanceIndirectInvocablecommon_iterator’s destructor should not be specified in [common.iter.op=]constexpr for <experimental/ranges/iterator>)f880d726 [EDITORIAL] s/Callable/Invocable/g
The earlier change that replaced (nearly) all uses of Callable concepts with Invocable concepts missed that the generate(_n)? algorithms were constrained with Callable.
8fc2e509 [EDITORIAL] Correct mispellings of “only if” as “if and only if”
LWG in Toronto pointed out that the concept definitions in P0547 were improperly using “if and only if” when the intent was “only if.” This corrects similar improper uses of “if and only if” in the remainder of the TS concept definitions.
d2a700e5 [EDITORIAL] Rename “implicit expression variants” to “implicit expression variations”
As noted in issue #384, LWG in Kona requested a different name for the “implicit expression variant” term-of-art to avoid confusion with C++17 std::variant.
Several less significant editorial changes occurred between publishing N4671 and N4684 (See the git revision history at https://github.com/ericniebler/stl2/compare/N4671...N4684) with git log entries:
commit 07fd666d
Author: Eric Niebler <eniebler@boost.org>
Date: Wed Jul 26 17:34:17 2017 -0700
[EDITORIAL] Fix formatting SNAFU in [common.iter.op.iter_move]
commit 9fe2dc8b
Author: Casey Carter <Casey@Carter.net>
Date: Sat Jul 22 09:31:15 2017 -0700
[EDITORIAL] Clarify Returns and Complexity of alg.fill and alg.generate
Fixes #497.
commit d35806c2
Author: Casey Carter <Casey@Carter.net>
Date: Sat Jul 22 07:43:46 2017 -0700
[EDITORIAL] Correct "specifications...follows" in [structure.specifications]
commit 6afa0629
Author: Casey Carter <Casey@Carter.net>
Date: Thu Jul 20 13:57:32 2017 -0700
[EDITORIAL] Fix typo in P0547 and in [iterators.output]
Fixes #494.
commit 94d31404
Author: Casey Carter <Casey@Carter.net>
Date: Thu Jul 20 10:09:19 2017 -0700
[EDITORIAL] Don't redundantly wrap URNG in namespaces
Fixes #492.
commit 489196e0
Author: Casey Carter <Casey@Carter.net>
Date: Wed Jul 19 20:01:56 2017 -0700
[EDITORIAL] manually wrap long lines
commit e251468b
Author: Eric Niebler <eniebler@boost.org>
Date: Thu Jul 20 09:10:27 2017 -0700
[EDITORIAL] Add some missing periods.
commit f349b603
Author: Casey Carter <Casey@Carter.net>
Date: Thu Jul 20 07:47:38 2017 -0700
[EDITORIAL] Cleanup font usage in [stmt.ranged]
commit 6610d68f
Author: Casey Carter <Casey@Carter.net>
Date: Tue Jul 18 17:41:01 2017 -0700
[EDITORIAL] Cleanup "()" in SwappableWith
commit 00d9f8df
Author: Casey Carter <Casey@Carter.net>
Date: Fri Jul 7 06:00:47 2017 -0700
[EDITORIAL] s/static_const/static_cast/g
commit eb024249
Author: Eric Niebler <eniebler@boost.org>
Date: Mon Jun 19 15:48:25 2017 -0700
[EDITORIAL] N3351 and N4128 are non-normative references, move to bib; fixes #391
commit c7f5bcdc
Author: Casey Carter <Casey@Carter.net>
Date: Mon Jun 19 11:23:07 2017 -0700
[EDITORIAL] Bring [intro.defs] into compliance with ISO/IEC directives part 2 section 16.5
Fixes #405.