#include <iostream>
struct Foo; // forward declaration only
template<typename T>
void Bar(T*, typename T::foo = 0) {
std::cout << __PRETTY_FUNCTION__ << std::endl;
}
void Bar(void*) {
std::cout << __PRETTY_FUNCTION__ << std::endl;
}
int main() {
Bar((Foo*)NULL);
}
I2luY2x1ZGUgPGlvc3RyZWFtPgoKc3RydWN0IEZvbzsgLy8gZm9yd2FyZCBkZWNsYXJhdGlvbiBvbmx5Cgp0ZW1wbGF0ZTx0eXBlbmFtZSBUPgp2b2lkIEJhcihUKiwgdHlwZW5hbWUgVDo6Zm9vID0gMCkgewogICAgc3RkOjpjb3V0IDw8IF9fUFJFVFRZX0ZVTkNUSU9OX18gPDwgc3RkOjplbmRsOwp9Cgp2b2lkIEJhcih2b2lkKikgewogICAgc3RkOjpjb3V0IDw8IF9fUFJFVFRZX0ZVTkNUSU9OX18gPDwgc3RkOjplbmRsOwp9CgppbnQgbWFpbigpIHsKICAgIEJhcigoRm9vKilOVUxMKTsKfQo=