|
Boost Users : |
From: Jeff Flinn (TriumphSprint2000_at_[hidden])
Date: 2003-09-24 09:27:47
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?
----------------------------------------------------------
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;
tGroups Groups()const{ return mGroups; }
tVarItr VarBegin() { return tVarItr ( mVars.begin() ); }
tVarItr VarEnd () { return tVarItr ( mVars.end () ); }
tVarConstItr VarBegin()const{ return tVarConstItr( mVars.begin() ); }
tVarConstItr VarEnd ()const{ return tVarConstItr( mVars.end () ); }
};
usage:
------
int CDictionaryEditorView::Idx( const TCHAR* aChrPtr, bool aExact )const
{
boost::function1<bool,const CDictionary::VarSpec&> lFindFnc;
if( aExact )
{
lFindFnc = boost::bind( std::equal_to<std::string>()
, std::string(aChrPtr)
, boost::bind( &CDictionary::VarSpec::Name, _1 )
);
}
else
{
//...
}
CDictionary::tVarConstItr lBeg = mDctPtr->VarBegin();
CDictionary::tVarConstItr lEnd = mDctPtr->VarEnd ();
CDictionary::tVarConstItr lItr = std::find_if( lBeg, lEnd, lFindFnc );
return (lItr!=lEnd)? std::distance( lBeg, lItr ) : -1;
}
-- Jeff Flinn Applied Dynamics, International
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