Similar problem when the type is a pointer to member function:
void (Bar::*Method3(int x))(int)
{
void (Bar::*member)(int);
if (x < 0)
{
// #TEST#: EM3 Extract Method on next line
member = &Bar::Operation1;
}
else
{
member = &Bar::Operation2;
}
return member;
}
Extract Method for EM3 yields:
void (Bar::* MyMethod(void (Bar::* member)
{
member = &Bar::Operation1;
return member;
}