Thanks for the message. But I still believe at least some of these should
be fixable. For example, the first one:

<---- error message begin ---->
msvc.compile.c++ bin\msvc\debug\threading-multi\allocate_resources.obj
C:\boost_1_33_1\boost\filesystem\operations.hpp(56) : error C2955:
'boost::equivalent' : use of class template requires template argument
        C:\boost_1_33_1\boost\operators.hpp(820) : see declaration of

    call "C:\Program Files\Microsoft Visual Studio
.NET\Vc7\bin\vcvars32.bat" > nul
cl  /Zm800 -nologo -TP  /Z7 /Od /Ob0 /GR /MDd  /wd4675 /EHs  /Zc:forScope
/Zc:wchar_t  @"bin\msvc\debug\threading-multi\allocate_resources.obj.rsp"
-c -Fo"bin\msvc\debug\threading-multi\allocate_resources.obj"  && del /f

<---- error message end ---->

If I look at
C:\boost_1_33_1\boost\filesystem\operations.hpp, line 56,
it defines


But in
C:\boost_1_33_1\boost\operators.hpp, line 820

BOOST_FILESYSTEM_DECL bool equivalent( const path & ph1, const path & ph2

So there are 2 equivalent, one defined in boost::filesystem, and one in
global as a macro.

The allocate_resources.cpp does invoke any 'equivalent', it is just simple
header conflict, either in libtorrent's declaration, or within boost.

If I comments out line 56 in boost/operators.hpp for the
"BOOST_OPERATOR_TEMPLATE(equivalent)", then all the related error

The question is if it is the right thing to do. Well, I am really new to
boost and libtorrent, and really have no feeling about this at all.

With regard to the boost:bind problem, I am not sure what happened. BTW, anyone
knows the equalivalent form for the following nested bind:

        struct peer
            enum connection_type { not_connectable,connectable };

            peer(const address& ip, connection_type t);
            peer_connection* connection;
       std::vector<peer> m_peers;
        peer_connection& c;

        assert(std::find_if(m_peers.begin(), m_peers.end()
            , boost::bind(std::equal_to<peer_connection*>(), boost::bind(&peer::connection, _1)
                , &c)) != m_peers.end());

I am trying to invoke the predicate std:equal_to() directly, therefore remove the first boost::bind()..

Best regards,

Allen Zhao

John Maddock wrote:
Is there any successful story that you can share with me with regards
to VC 7.0 compilation? Any pointers are welcome. The errors I have
seem so far at enclosed at the end. The libtorrent only depends on
boost:filesystem, boost:date_time and boost::thread.

Looking at the error messages it appears that libtorrent depends on lambda, 
operators, bind and possibly other Boost libraries as well.  At least one of 
those (lambda) is *very unlikely* to work with VC 7.0.  So my guess is that 
libtorrent needs VC 7.1 or later, but that's really a question for it's 

HTH John. 

Boost-users mailing list