|
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