Boost logo

Boost :

Subject: [boost] [range] Question about adapted range safety given C++11 auto
From: Beman Dawes (bdawes_at_[hidden])
Date: 2012-04-22 09:21:43


http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2012/n3350.html claims:

"Boost's range library focuses on defining a set of Range concepts
that allow Containers to be Ranges. Because Containers are
heavy-weight, this forces Boost to use references for all of their
uses of Ranges, including Ranges that are captured by Range Adapters.
This worked fine in C++98, where users couldn't name the types of the
Range Adapters in order to declare local variables, but with C++11's
auto keyword, users can now save adapted ranges. Since Boost's adapted
ranges capture references to their arguments, which can be
temporaries, this is no longer a safe design."

Is this claim correct? If so, what's the real-world impact?

--Beman


Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk