|
Boost : |
Subject: [boost] [range]slicing any_range
From: Takatoshi Kondo (redboltz_at_[hidden])
Date: 2013-12-24 01:55:20
Hello,
I'm using the Boost.Range library (Version:1.55.0). When I use
any_range with sliced adaptor, slicing operation doesn't return. Is my
code something wrong? If it is a bug, I will create a ticket.
Here is the minimized code that reproduces the situation:
#include <vector>
#include <iostream>
#include <cassert>
#include <boost/range/any_range.hpp>
#include <boost/range/adaptor/sliced.hpp>
typedef boost::any_range<int, boost::random_access_traversal_tag, int,
std::ptrdiff_t> int_range;
int main() {
std::vector<int> v;
v.push_back(0);
v.push_back(1);
v.push_back(2);
{ // works fine
std::cout << "slice vector" << std::endl;
int_range ir1 = v | boost::adaptors::sliced(0,2);
std::cout << "slice vector finished" << std::endl;
assert(ir1[0] == 0);
assert(ir1[1] == 1);
assert(ir1.size() == 2);
}
{
int_range ir2(v);
std::cout << "slice any_range" << std::endl;
int_range ir3 = ir2 | boost::adaptors::sliced(0,2); // never return...
std::cout << "slice any_range finished" << std::endl;
assert(ir3[0] == 0);
assert(ir3[1] == 1);
assert(ir3.size() == 2);
}
}
Takatoshi Kondo
Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk