Estoy usando g ++ 4.6.0 para compilar algunos códigos C++ que se compilaron con éxito en versiones anteriores.¿Cómo distinguir entre bind() en sys/sockets.h y std :: bind?
if (bind(iControl, (struct sockaddr *) &sa, sizeof(sa)) == -1)
throw runtime_error ("bind");
donde iControl es un socket, y SA es una struct sockaddr_in
.
Sin embargo, en g ++ 4.6 me sale el siguiente error:
comms.cpp:93:66: error: no match for ‘operator==’ in ‘std::bind(_Functor&&, _ArgTypes&& ...) [with _Functor = int&, _ArgTypes = {sockaddr*, long unsigned int}, typename std::_Bind_helper<_Functor, _ArgTypes>::type = std::_Bind<int(sockaddr*, long unsigned int)>]((* &((sockaddr*)(& sa))), (* &16ul)) == -0x00000000000000001’
comms.cpp: 93: 66: nota: los candidatos son:
seguido de aproximadamente una página y un medio de posibles candidatos .
Parece que está mezclando la función de vinculación en sys/sockets.h
con std :: bind en functional
. ¿Cómo desambiguo los dos sin volver a escribir todo el archivo fuente para eliminar using namespace std
?
¿Quieres saber por qué 'using namespace std;' no es una gran idea? :-) –
Problemas similares pueden aumentar cuando utilizas OpenCV. –
@BoPersson Pude haber descubierto por qué: P Pero este código es anterior a mí, en mi defensa. –