Boost logo

Boost :

Subject: Re: [boost] [type_erasure] Using any with iterator Concept.
From: Adam Wulkiewicz (adam.wulkiewicz_at_[hidden])
Date: 2013-04-27 18:09:47


Hi,

Steven Watanabe wrote:
>
> The code currently supports only forward_traversal_tag,
> bidirectional_traversal_tag, and random_access_traversal_tag.
>
> What needs to be added is another concept_interface
> specialization.
>

Of course, thanks. Now it works as expected.

With the patch sent in the other email also bidirection iterator Concept
must be tweaked since now it must use requirements from forward iterator
Concept. I've run tests and on MSVC2010 and clang everything is ok but
on MinGW and GCC 4.7 there is an error:

boost/mpl/aux_/preprocessed/gcc/arg.hpp:45:9: error: template
instantiation depth exceeds maximum of 128

in test_forward_iterator.

After some tweaks (no_traversal iterator as a base Concept) it's ok for
forward iterator but there are no tests for bidirectional and random
access one. It's possible that this error will occur for those iterators
even without my change. So just in case I've also set no_traversal_tag
as a base Concept for those too.

One might also try to implement only one concept_interface using
boost::iterator_facade<...>::iterator_category or
boost::detail::facade_iterator_category<> to be consistent with
Boost.Iterator.

I hope this would be useful.

Do you know if Boost.TypeErasure is going to be released in 1.54
(preferably with similar changes)? I'm considering using it in
Geometry.Index.

Best regards,
Adam Wulkiewicz




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