ericniebler/range-v3

cartesian_product view, now with moar bugs

ericniebler opened this issue · 0 comments

The following program:

#include <range/v3/span.hpp>
#include <range/v3/size.hpp>
#include <range/v3/view/cartesian_product.hpp>

using namespace ranges;

int main()
{
    int some_ints[] = {0,1,2,3};
    char const * some_strings[] = {"John", "Paul", "George", "Ringo"};
    auto rng = view::cartesian_product(
        span<int, size(some_ints)>{some_ints},
        span<char const*, size(some_strings)>{some_strings}
    );
    (void)(rng.end() - 1);
}

results in the following assertion:

prog.exe: /opt/wandbox/range-v3/include/range/v3/view/cartesian_product.hpp:194: void ranges::v3::
cartesian_product_view<ranges::v3::span<int, 4>, ranges::v3::span<const char *, 4> >::cursor<true>
::advance_(meta::size_t<N>, std::ptrdiff_t) [Views = <ranges::v3::span<int, 4>, ranges::v3::span<c
onst char *, 4>>, IsConst = true, N = 1]: Assertion `0 <= idx && idx < my_size' failed.

Aborted

https://wandbox.org/permlink/c1qymFJLEFnTJNHk