Здравствуйте, nen777w, Вы писали:
N>[...]
N> //error C2914: 'boost::phoenix::operator ->*' : cannot deduce template argument as function argument is ambiguous
N> //error C2568: '->*' : unable to resolve function overload
N> std::for_each( v.begin(), v.end(), lambda[ (_1->*&S::foo)() ] );
N>}
N>
Как обычно в случае перегруженных ф-ций:
std::for_each( v.begin(), v.end(), lambda[ (_1->* static_cast<int ( S::* )()>( &S::foo ) )() ] );
Например:
struct S
{
int foo() { return 0; }
int foo( int ) { return 1; }
};
typedef std::vector<S> v_S;
void test()
{
using boost::phoenix::placeholders::_1;
using boost::phoenix::lambda;
v_S v;
//error C2914: 'boost::phoenix::operator ->*' : cannot deduce template argument as function argument is ambiguous
//error C2568: '->*' : unable to resolve function overload
std::for_each( v.begin(), v.end(), lambda[ (_1->*&S::foo)() ] );
}
Спасибо.