Skip to content

To Err Is Human

Compare
Choose a tag to compare
@ericniebler ericniebler released this 07 Dec 00:00
· 254 commits to master since this release

Released: Dec 6, 2019.

IMPORTANT: Before upgrading, please note that several older compiler versions
and build configurations are no longer supported! In particular, MSVC now needs
/std:c++latest.

ALSO: When taking a dependency on the range-v3, meta, or concepts
libraries via CMake, please now use the namespace qualified target names:

  • range-v3::range-v3
  • range-v3::meta
  • range-v3::concepts

Changes:

  • NEW: Rewritten concepts portability layer with simpler macros for better
    diagnostics.
  • NEW: The views::cache1 view caches the most recent value in the
    range. This can help avoid reevaluation of transformations in complex view
    pipelines.
  • NEW: ranges::contains algorithm.
  • NEW: enable_safe_range trait for opting in to the forwarding-range
    concept. These are ranges whose iterators remain valid even after the
    range itself has been destroyed; e.g., std::string_view and
    ranges::subrange.
  • The readable concept has changed such that types that are not indirectly
    readable with operator* (_e.g., std::optional) no longer satisfy that
    concept.
  • Using views::join to join a range of xvalue ranges works again.
  • The following range access primitives no longer accept temporary containers
    (i.e., they refuse to return references known to be dangling):
    • range::front
    • range::back
    • range::at
    • range::index
  • views::concat with a single argument now simply returns its argument.
  • ranges::ostream_iterator<T> now coerces arguments to T before inserting
    them into the wrapped ostream.
  • Smaller iterators for views::transform and views::take_while.
  • actions::split and actions::split_when now support partial application and
    pipelining (#1085).
  • views::group_by and its iterator both get a .base() member to access the
    underlying range and iterator, respectively.
  • Improved diagnostics with clang.
  • Assorted bug fixes and compiler work-arounds: #284, #491, #499, #871, #1022, #1043, #1081, #1085,
    #1101, #1116, #1296, #1305, and #1335.

Many thanks to GitHub users @CaseyCarter, @morinmorin, @h-2, @MichaelWJung,
@JohelEGP, @marehr, @alkino, @xuning97, @brevzin, and @mpusz for their
contributions.