Range V3 Versions Save

Range library for C++14/17/20, basis for C++20's std::ranges

0.2.6

6 years ago

0.2.6 2017-06-21

  • Experimental coroutines with ranges::experimental::generator (from @CaseyCarter)
  • ranges::optional now behaves like std::optional (from @CaseyCarter)
  • Extensive bug fixes with Input ranges (from @CaseyCarter)

0.2.5

7 years ago
  • view::chunk works on Input ranges (from @CaseyCarter)
  • for_each_n algorithm (from @khlebnikov)
  • Portability fixes for MinGW, clang-3.6 and -3.7, and gcc-7; and cmake 3.0

0.2.4

7 years ago

0.2.4 April 12, 2017 Fix the following bug:

  • action::stable_sort of vector broken on Clang 3.8.1 since ~last Xmas (ericniebler/range-v3#632).

0.2.3

7 years ago

Fix the following bug:

  • iterators that return move-only types by value do not satisfy Readable (ericniebler/stl2#399).

0.2.2

7 years ago

New in this release:

  • view::linear_distribute(from,to,n) - A view of n elements between from and to, distributed evenly.
  • view::indices(n) - A view of the indices [0,1,2...n-1].
  • view::closed_indices(n) - A view of the indices [0,1,2...n].

This release also deprecates view::ints(n) as confusing to new users.

0.2.1

7 years ago

New in this release:

  • view::cartesian_product
  • action::reverse

Thanks to @gnzlbg and @CaseyCarter for their help.

0.2.0

7 years ago

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.

0.1.1

7 years ago

Small tweak to Writable concept to fix #573.

0.1.0

7 years ago

This is a fairly stable release, and the first one to use semantic versioning.