|
Boost : |
Subject: [boost] [type_erasure] Using any with iterator Concept.
From: Adam Wulkiewicz (adam.wulkiewicz_at_[hidden])
Date: 2013-04-26 12:22:44
Hi,
I'm trying to use type-erased iterator in STL algorithms, e.g. copy but
get errors like this one:
error C2039: 'iterator_category' : is not a member of
'boost::type_erasure::any<Concept>' c:\program files (x86)\microsoft
visual studio 10.0\vc\include\xutility 373
of course any doesn't define iterator_category. I'm using MSVC2010 and
doing something like this:
typedef boost::type_erasure::any<
boost::type_erasure::iterator<
boost::single_pass_traversal_tag
>
> iterator;
// ...
iterator first = return_some_iterator(...);
iterator last = return_some_iterator(...);
// BAM!
std::copy(first, last, std::back_inserter(result));
// BAM!
typedef iterator::iterator_category C;
I simply tried to add it to the iterator<> Concept defined in
iterator.hpp but this didn't help:
template<...>
struct iterator< ::boost::single_pass_traversal_tag, ...> :
iterator< ::boost::incrementable_traversal_tag, ...>
{
typedef ValueType value_type;
typedef typename iterator_reference<
Reference, ValueType
>::type reference;
typedef DifferenceType difference_type;
typedef std::input_iterator_tag iterator_category;
};
Am I doing something wrong or is it an error in Boost.TypeErasure?
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