I have a windows compiler that is a derivative of cw 9.4 that is complaining
when trying to compile the following
#include
struct a
{
void foo(int) {}
void foo() {}
};
void bar()
{
boost::bind( &a::foo, _1 );
}
the actual error is:
### mwccsym2.exe Compiler:
# In: C:\Subversion\boost-RC_1_34_0\boost\boost\bind.hpp
# From: bind_test.cpp
# ----------------------
# 1633: ::bind_t< result_type, F, list_type >( F( f ), list_type( a1 ) );
# Error: ^
# illegal implicit conversion from 'boost::_bi::bind_t,
boost::_bi::list1>>' to
# 'boost::_bi::bind_t,
boost::_bi::list1>>'
# (point of instantiation: 'bar()')
# (instantiating: 'boost::bind, void (const void *const ,
int), a>(void (a::*)(int), boost::arg<1>)')
Changing the definition to
struct a
{
void foo() {}
void foo(int) {}
};
lets it compile but this is not a general solution as this fails to compile:
void bar()
{
boost::bind( &a::foo, _1, 0 );
}
I've uploaded a full minimal example to my website including the compiler in
question if it helps.
http://www.mikemarcin.com/misc/mwccsym/bind_overload.zip
Thanks,
Michael Marcin