C
Christoph Heindl
Hi,
It seems that the macro bind as defined in trunk/include/ruby/win32.h
conflicts with added tr1 support to msvc9.0 (which is essentially
SP1). The conflict arises when <trunk/include/ruby/win32.h> is
included along with visual studio standard tr1 include <xxbind>
<trunk/include/ruby/win32.h> defines:
#ifdef bind
#undef bind
#endif
#define bind(s, a, l) rb_w32_bind(s, a, l)
<xxbind> has template methods such as
template<class _Ret,
class _Fty
_C_CLASS_ARG0>
_Bind<_Ret,
_BINDN<_Callable_obj<_Fty> _C_ARG0_ARG1> >
bind(_Fty _Val _C_ARG0_A0) // <--- here!
{ // bind to UDT and user-specified return type
typedef _BINDN<_Callable_obj<_Fty> _C_ARG0_ARG1> _MyBind;
return (_Bind<_Ret, _MyBind>(_MyBind(_Val _C_A0_A1)));
}
Renaming the macro fixed the problem for compiling the ruby wrappers
I'm working on.
Any solutions other than renaming are appreciated.
Best regards,
Christoph
It seems that the macro bind as defined in trunk/include/ruby/win32.h
conflicts with added tr1 support to msvc9.0 (which is essentially
SP1). The conflict arises when <trunk/include/ruby/win32.h> is
included along with visual studio standard tr1 include <xxbind>
<trunk/include/ruby/win32.h> defines:
#ifdef bind
#undef bind
#endif
#define bind(s, a, l) rb_w32_bind(s, a, l)
<xxbind> has template methods such as
template<class _Ret,
class _Fty
_C_CLASS_ARG0>
_Bind<_Ret,
_BINDN<_Callable_obj<_Fty> _C_ARG0_ARG1> >
bind(_Fty _Val _C_ARG0_A0) // <--- here!
{ // bind to UDT and user-specified return type
typedef _BINDN<_Callable_obj<_Fty> _C_ARG0_ARG1> _MyBind;
return (_Bind<_Ret, _MyBind>(_MyBind(_Val _C_A0_A1)));
}
Renaming the macro fixed the problem for compiling the ruby wrappers
I'm working on.
Any solutions other than renaming are appreciated.
Best regards,
Christoph