Opened 8 years ago

Last modified 8 years ago

#10360 assigned Bugs

Since 1.56, any_range use static cast of reference instead of implicit conversion

Reported by: vdavid@… Owned by: Neil Groves
Milestone: To Be Determined Component: range
Version: Boost 1.56.0 Severity: Regression
Keywords: Cc: p.omta@…

Description

Since 1.56, when dereferencing, any_range tries to use static cast of reference instead of implicit conversion like in 1.55.

Here is an example that works with 1.55 but fails to compile with 1.56.

#include <boost/range/any_range.hpp>
#include <memory>
#include <vector>

struct A {};

int main() {
    std::vector<std::shared_ptr<A> > v;
    boost::any_range<std::shared_ptr<const A>,
                     boost::forward_traversal_tag,
                     std::shared_ptr<const A>,
                     std::ptrdiff_t> r(v);
}

Change History (3)

comment:1 by anonymous, 8 years ago

A work-around is to go through "boost::adaptors::transform" to do the conversion.

comment:2 by Neil Groves, 8 years ago

Status: newassigned

Drat, this is an unanticipated side-effect of a change to help other users with user-defined types.

I shall look at this during this week.

comment:3 by Paul Omta <p.omta@…>, 8 years ago

Cc: p.omta@… added
Note: See TracTickets for help on using tickets.