Ruby macro bind conflicts tr1 on msvc9.0

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

This forum is not affiliated to the Ruby language, Ruby on Rails framework, nor any Ruby applications discussed here.

| Privacy Policy | Terms of Service | Remote Ruby Jobs