Boost logo

Boost Users :

From: David Abrahams (dave_at_[hidden])
Date: 2003-09-24 11:37:26


"Jeff Flinn" <TriumphSprint2000_at_[hidden]> writes:

> I'm having problems compiling the code below with boost_1_30_2 and VC71
> complaining about:
>
> ...\Microsoft Visual Studio .NET 2003\Vc7\include\xutility(489)
> : error C2665: 'std::_Distance2'
> : none of the 4 overloads can convert parameter 4
> from type 'std::iterator_traits<_Iter>::iterator_category'
> with
> [
> _Iter=CDictionary::tVarConstItr
> ]
> ...
>
> Replacing with std::distance( lBeg.base(), lItr.base() ) does compile and
> work properly. Am I missing something in the typedef of tVarConstItr that
> would allow direct usage?

No, you've got the order of the parameters to
indirect_iterator_generator wrong. I suggest you let the library
defaults take effect instead.

typedef boost::indirect_iterator_generator
< tVars::const_iterator
, tVar const
>::type tVarConstItr;

typedef boost::indirect_iterator_generator
< tVars::const_iterator
, tVar
::iterator_category
>::type tVarItr;

But you'll have a bigger problem. IIRC the version of iterator
adaptors in 1.30.2 doesn't support indirect iterators over shared_ptr.
Go ahead and try it, but if you have trouble you may want to switch to
the (much easier-to-use) version of the library in the CVS, which
explicitly *does* support that usage.

> ----------------------------------------------------------
>
> class CDictionary
> {
> ...
>
> class VarSpec
> {
> ...
> typedef boost::shared_ptr<VarSpec> tPtr;
> };
>
> typedef VarSpec tVar;
> typedef tVar::tPtr tVarPtr;
> typedef std::vector<tVarPtr> tVars;
>
> typedef boost::indirect_iterator_generator
> < tVars::const_iterator
> , tVar
> , tVar&
> , tVar*
> , std::iterator_traits<tVars::const_iterator>
> ::iterator_category
>>::type tVarConstItr;
>
> typedef boost::indirect_iterator_generator
> < tVars::iterator
> , tVar
> , tVar&
> , tVar*
> , std::iterator_traits<tVars::iterator>
> ::iterator_category
>>::type tVarItr;

-- 
Dave Abrahams
Boost Consulting
www.boost-consulting.com

Boost-users list run by williamkempf at hotmail.com, kalb at libertysoft.com, bjorn.karlsson at readsoft.com, gregod at cs.rpi.edu, wekempf at cox.net