Compile error in C++ broker, SessionManager.cpp
-----------------------------------------------

                 Key: QPID-1424
                 URL: https://issues.apache.org/jira/browse/QPID-1424
             Project: Qpid
          Issue Type: Bug
          Components: C++ Broker
    Affects Versions: M4
         Environment: Windows, Visual Studio .NET 2005 (VC8) and 2008 (VC9)
            Reporter: Steve Huston
             Fix For: M4


In this method in cpp/src/qpid/broker/SessionManager.cpp there's a compile 
error on Windows:

void SessionManager::eraseExpired() {
    // Called with lock held.
    if (!detached.empty()) {
        Detached::iterator keep = std::lower_bound(
            detached.begin(), detached.end(), now(),
            boost::bind(std::less<AbsTime>(), 
boost::bind(&SessionState::expiry, _1), _2));

It doesn't like the boost::bind(&SessionState::expiry, _1):

C:\Program Files (x86)\boost\boost_1_35_0\boost/bind.hpp(279) : error C2664: 
'bool std::less<_Ty>::operator ()(const _Ty &,const _Ty &) const' : cannot 
convert parameter 2 from 'qpid::broker::SessionState' to 'const 
qpid::sys::AbsTime &'
1>        with
1>        [
1>            _Ty=qpid::sys::AbsTime
1>        ]
1>        Reason: cannot convert from 'qpid::broker::SessionState' to 'const 
qpid::sys::AbsTime'
1>        No user-defined-conversion operator available that can perform this 
conversion, or the operator cannot be called
1>        C:\Program Files 
(x86)\boost\boost_1_35_0\boost/bind/bind_template.hpp(76) : see reference to 
function template instantiation 'R boost::_bi::list2<A1,A2>::operator 
()<bool,F,boost::_bi::list2<const qpid::sys::AbsTime 
&,qpid::broker::SessionState &>>(boost::_bi::type<T>,F &,A &,long)' being 
compiled
1>        with
1>        [
1>            R=bool,
1>            A1=boost::_bi::bind_t<const qpid::sys::AbsTime 
&,boost::_mfi::dm<qpid::sys::AbsTime,qpid::broker::SessionState>,boost::_bi::list1<boost::arg<1>>>,
1>            A2=boost::arg<2>,
1>            F=std::less<qpid::sys::AbsTime>,
1>            T=bool,
1>            A=boost::_bi::list2<const qpid::sys::AbsTime 
&,qpid::broker::SessionState &>
1>        ]
1>        C:\Program Files (x86)\Microsoft Visual Studio 
8\VC\include\xutility(314) : see reference to function template instantiation 
'bool boost::_bi::bind_t<R,F,L>::operator ()<_Ty2,_Ty1>(const A1 &,A2 &)' being 
compiled
1>        with
1>        [
1>            R=boost::_bi::unspecified,
1>            F=std::less<qpid::sys::AbsTime>,
1>            L=boost::_bi::list2<boost::_bi::bind_t<const qpid::sys::AbsTime 
&,boost::_mfi::dm<qpid::sys::AbsTime,qpid::broker::SessionState>,boost::_bi::list1<boost::arg<1>>>,boost::arg<2>>,
1>            _Ty2=qpid::sys::AbsTime,
1>            _Ty1=qpid::broker::SessionState,
1>            A1=qpid::sys::AbsTime,
1>            A2=qpid::broker::SessionState
1>        ]
1>        C:\Program Files (x86)\Microsoft Visual Studio 
8\VC\include\algorithm(2304) : see reference to function template instantiation 
'bool std::_Debug_lt_pred<_Pr,T,_Ty>(_Pr,_Ty1 &,const _Ty2 &,const wchar_t 
*,unsigned int)' being compiled
1>        with
1>        [
1>            
_Pr=boost::_bi::bind_t<boost::_bi::unspecified,std::less<qpid::sys::AbsTime>,boost::_bi::list2<boost::_bi::bind_t<const
 qpid::sys::AbsTime 
&,boost::_mfi::dm<qpid::sys::AbsTime,qpid::broker::SessionState>,boost::_bi::list1<boost::arg<1>>>,boost::arg<2>>>,
1>            T=qpid::broker::SessionState,
1>            _Ty=qpid::sys::AbsTime,
1>            _Ty1=qpid::broker::SessionState,
1>            _Ty2=qpid::sys::AbsTime
1>        ]
1>        C:\Program Files (x86)\Microsoft Visual Studio 
8\VC\include\algorithm(2318) : see reference to function template instantiation 
'_FwdIt std::_Lower_bound<boost::void_ptr_iterator<VoidIter,T>,_Ty,__w64 
int,_Pr>(_FwdIt,_FwdIt,const _Ty &,_Pr,_Diff *)' being compiled
1>        with
1>        [
1>            _FwdIt=boost::void_ptr_iterator<std::_Vector_iterator<void 
*,std::allocator<void *>>,qpid::broker::SessionState>,
1>            VoidIter=std::_Vector_iterator<void *,std::allocator<void *>>,
1>            T=qpid::broker::SessionState,
1>            _Ty=qpid::sys::AbsTime,
1>            
_Pr=boost::_bi::bind_t<boost::_bi::unspecified,std::less<qpid::sys::AbsTime>,boost::_bi::list2<boost::_bi::bind_t<const
 qpid::sys::AbsTime 
&,boost::_mfi::dm<qpid::sys::AbsTime,qpid::broker::SessionState>,boost::_bi::list1<boost::arg<1>>>,boost::arg<2>>>,
1>            _Diff=__w64 int
1>        ]
1>        .\qpid\broker\SessionManager.cpp(91) : see reference to function 
template instantiation '_FwdIt 
std::lower_bound<boost::void_ptr_iterator<VoidIter,T>,qpid::sys::AbsTime,boost::_bi::bind_t<R,F,L>>(_FwdIt,_FwdIt,const
 _Ty &,_Pr)' being compiled
1>        with
1>        [
1>            _FwdIt=boost::void_ptr_iterator<std::_Vector_iterator<void 
*,std::allocator<void *>>,qpid::broker::SessionState>,
1>            VoidIter=std::_Vector_iterator<void *,std::allocator<void *>>,
1>            T=qpid::broker::SessionState,
1>            R=boost::_bi::unspecified,
1>            F=std::less<qpid::sys::AbsTime>,
1>            L=boost::_bi::list2<boost::_bi::bind_t<const qpid::sys::AbsTime 
&,boost::_mfi::dm<qpid::sys::AbsTime,qpid::broker::SessionState>,boost::_bi::list1<boost::arg<1>>>,boost::arg<2>>,
1>            _Ty=qpid::sys::AbsTime,
1>            
_Pr=boost::_bi::bind_t<boost::_bi::unspecified,std::less<qpid::sys::AbsTime>,boost::_bi::list2<boost::_bi::bind_t<const
 qpid::sys::AbsTime 
&,boost::_mfi::dm<qpid::sys::AbsTime,qpid::broker::SessionState>,boost::_bi::list1<boost::arg<1>>>,boost::arg<2>>>
1>        ]



-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to