Boost logo

Boost Users :

From: Allen Zhao (xlz_at_[hidden])
Date: 2006-01-04 16:42:44


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
allocate_resources.cpp
C:\boost_1_33_1\boost\filesystem\operations.hpp(56) : error C2955:
'boost::equivalent' : use of class template requires template argument
list
        C:\boost_1_33_1\boost\operators.hpp(820) : see declaration of
'boost::equivalent'

    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
"bin\msvc\debug\threading-multi\allocate_resources.obj.rsp"

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

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

BOOST_OPERATOR_TEMPLATE(equivalent)

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

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
>authors.
>
>HTH John.
>
>_______________________________________________
>Boost-users mailing list
>Boost-users_at_[hidden]
>http://lists.boost.org/mailman/listinfo.cgi/boost-users
>
>
>
>



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