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)
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)
최고
답글삭제최고!! 해결됨!!!
답글삭제감사합니다
답글삭제ㅠㅠ감사요
답글삭제