Skip to content

0.2.0

Compare
Choose a tag to compare
@ericniebler ericniebler released this 13 Mar 17:22
· 1281 commits to master since this release

Bring many interfaces into sync with the Ranges TS.

  • Many interfaces are simply renamed. The following table shows the old names
    and the new. (All names are in the ranges::v3 namespace.)

    Old Name New Name
    indirect_swap iter_swap
    indirect_move iter_move
    iterator_value_t value_type_t
    iterator_reference_t reference_t
    iterator_difference_t difference_type_t
    iterator_size_t size_type_t
    iterator_rvalue_reference_t rvalue_reference_t
    iterator_common_reference_t iter_common_reference_t
    range_value_t range_value_type_t
    range_difference_t range_difference_type_t
    range_size_t range_size_type_t
    range_iterator_t iterator_t
    range_sentinel_t sentinel_t
  • common_iterator now requires that its two types (Iterator and Sentinel)
    are different. Use common_iterator_t<I, S> to get the old behavior (i.e., if the two types are the same, it is an alias for I; otherwise, it is
    common_iterator<I, S>).

  • The following iterator adaptors now work with iterators that return proxies
    from their postfix increment operator (i.e., operator++(int)):

    • common_iterator
    • counted_iterator
  • The following customization points are now implemented per the Ranges TS
    spec and will no longer find the associated unconstrained overload in
    namespace std:::

    • ranges::begin
    • ranges::end
    • ranges::size
    • ranges::swap
    • ranges::iter_swap

    (In practice, this has very little effect but it may effect overloading in
    rare situations.)

  • ranges::is_swappable now only takes one template parameter. The new
    ranges::is_swappable_with<T, U> tests whether T and U are swappable.
    ranges::is_swappable<T> is equivalent to ranges::is_swappable_with<T &, T &>.

  • The following object concepts have changed to conform with the Ranges TS
    specification, and approved changes (see P0547):

    • Destructible
    • Constructible
    • DefaultConstructible
    • MoveConstructible
    • CopyConstructible
    • Movable
    • Assignable
  • The View concept is no longer satisfied by reference types.

  • is_view is now called enable_view

  • The syntax for defining a concept has changed slightly. See utility/iterator_concepts.hpp for examples.

This release drops support for gcc 4.8.