To Err Is Human
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 withoperator*
(_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 toT
before inserting
them into the wrapped ostream.- Smaller iterators for
views::transform
andviews::take_while
. actions::split
andactions::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.