C2678 이항 '!=': 왼쪽 피연산자로 'std::_Binder' 형식을 사용하는 연산자가 없거나 허용되는 변환이 없습니다.

비주얼 스튜디오 2008에서 2015로 마이그레이션 중 아래와 같은 에러가 있었습니다.

C2678 이항 '!=': 왼쪽 피연산자로 'std::_Binder<std::_Unforced,SOCKET &,SOCKADDR *,int &>' 형식을 사용하는 연산자가 없거나 허용되는 변환이 없습니다.

if(bind(sock,(SOCKADDR*)&adr,iSize) != SOCKET_ERROR)

위와 같이 소켓 바인드를 사용하는 코드였는데 아래와 같이 std::_Binder로 인식이 되고 있더군요.

template<class _Fx,
class... _Types> inline
_Binder<_Unforced, _Fx, _Types...> bind(_Fx&& _Func, _Types&&... _Args)
{ // bind a callable object with an implicit return type
return (_Binder<_Unforced, _Fx, _Types...>(
_STD forward<_Fx>(_Func), _STD forward<_Types>(_Args)...));
}

소켓의 bind를 사용하기 위해 범위 확인 연산자 :: 를 지정해주면 됩니다.

if(::bind(sock,(SOCKADDR*)&adr,iSize) != SOCKET_ERROR)

댓글

댓글 쓰기

이 블로그의 인기 게시물

'xxx.exe' 프로그램을 시작할 수 없습니다. 지정된 파일을 찾을 수 없습니다.

goorm IDE에서 node.js 프로젝트로 Hello World Simple Server 만들어 띄워보기

애드센스 수익을 웨스턴 유니온으로 수표대신 현금으로 지급 받아보자.