Consider this code:
How in the world does the typedef bring foo into the global scope such that bar() can take an argument of type foo? What does the typedef really do here, and what really is the type of n as passed to bar()?Code:class X {
void foo() {}
};
typedef void (X::*foo)();
void bar(foo n) {}
int main() {}