Boost logo

Boost Users :

From: David Abrahams (dave_at_[hidden])
Date: 2003-09-24 15:36:20


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

> Dave,
>
> "David Abrahams" <dave_at_[hidden]> wrote in message > "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.
>
> Thanks for spotting that. I entered them in the order listed in the Template
> Parameters table rather than in the order specified in the Synopsis in the
> documentation.
>
>> 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.
>
> Explicitly specifying all template parameters is what allows 1.30.2 to work
> with shared_ptr's. I'm far from smart enough to figure this out on my own,
> and took this tack based on one of your responses that I found doing a
> search on relevant topics.
>
> I gather that the new iterator adaptors will not have these issues. Will
> they be in 1.31.0 recently brought up by Beman?

Absolutely. You can preview them at
http://www.boost-consulting.com/boost/libs/iterator/doc

-- 
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