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 Base
std
into std::experimental::ranges::v1
i++
for InputIterators
common_type
from P0022iter_move
and iter_swap
swap(*a,*b)
instead iter_swap(a,b)
, and move(*a)
instead of iter_move(a)
is_swappable
type traits should not be in namespace std
indirect_result_of
RegularInvocable
value_type
of classes with member element_type
insert_iterator
and ostreambuf_iterator
don’t properly support *o++ = t;
InputIterator
to support proxy iteratorssort
/stable_sort
/partial_sort
/nth_element
Common
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 typeIterator
Range
doesn’t require begintransform
does not include projection calls in ComplexityDestructible
?RandomAccessIterator
ConvertibleTo
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 prev
iter_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 noexcept
common_reference
doesn’t work with some proxy referencesconst
-qualified iterator types are not Readable
or Writable
OutputIterator
’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 Destructible
counted_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-assignReadable
istreambuf_iterator::operator->
find_first_of
and mismatch
should use IndirectRelation
instead of Indirect(Binary)Predicate
is_[nothrow]_indirectly_(movable|swappable)
common_type
with C++17’s [meta.trans.other]/p4common_type
, the Ranges TS requires vendors to break conformanceIndirectInvocable
common_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.