boost 1.55
VS2012 Update 4
===
Can you tell me why the following code fails to compile? It smells as
if udp.hpp is causing MSVC to "using namespace std".
PS: It doesn't happen if I remove the asio include.
PPS: It doesn't happen if g() takes int vs std::string.
PPPS: It doesn't happen on GCC
Thank you,
Chris
===
#include
#include
#include <string>
using boost::bind;
void g(const std::string&)
{
}
int main()
{
bind(g, _1);
return 0;
}
===
1>------ Build started: Project: OverlayServer, Configuration: Debug
Win32 ------
1> main.cpp
1>main.cpp(13): error C2668: 'std::bind' : ambiguous call to overloaded function
1> c:\program files (x86)\microsoft visual studio
11.0\vc\include\functional(1387): could be
'std::_Bind<_Forced,_Ret,_Fun,_V0_t,_V1_t,_V2_t,_V3_t,_V4_t,_V5_t,<unnamed-symbol>>
std::bind(_Rx (__cdecl
*)(const std::basic_string<_Elem,_Traits,_Alloc>),_Vx0_t)' [found
using argument-dependent lookup]
1> with
1> [
1> _Forced=true,
1> _Ret=void,
1> _Fun=void (__cdecl *const )(const std::string &),
1> _V0_t=boost::arg<1> &,
1> _V1_t=std::_Nil,
1> _V2_t=std::_Nil,
1> _V3_t=std::_Nil,
1> _V4_t=std::_Nil,
1> _V5_t=std::_Nil,
1> <unnamed-symbol>=std::_Nil,
1> I=1,
1> _Rx=void,
1> _Elem=char,
1> _Traits=std::char_traits<char>,
1> _Alloc=std::allocator<char>,
1> _Vx0_t=boost::arg<1> &
1> ]
1> c:\externalpackages\boost_1_55_0\boost\bind\bind_cc.hpp(26):
or 'boost::_bi::bind_t boost::bind(R (__cdecl *)(B1),A1)'
1> with
1> [
1> R=void,
1> F=void (__cdecl *)(const std::string &),
1> L=boost::_bi::list1>,
1> I=1,
1> B1=const std::string &,
1> A1=boost::arg<1>
1> ]
1> while trying to match the argument list
'(overloaded-function, boost::arg<I>)'
1> with
1> [
1> I=1
1> ]
========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========