Ruby macro bind conflicts tr1 on msvc9.0


#1

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

<trunk/include/ruby/win32.h> defines:

#ifdef bind
#undef bind
#endif
#define bind(s, a, l) rb_w32_bind(s, a, l)

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