#include <iostream>
// simulate #include <foo.h>
// foo.h begin
struct Foo {
typedef int foo;
};
// foo.h end
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);
}
I2luY2x1ZGUgPGlvc3RyZWFtPgoKLy8gc2ltdWxhdGUgI2luY2x1ZGUgPGZvby5oPgovLyBmb28uaCBiZWdpbgpzdHJ1Y3QgRm9vIHsKICAgIHR5cGVkZWYgaW50IGZvbzsKfTsKLy8gZm9vLmggZW5kCgp0ZW1wbGF0ZTx0eXBlbmFtZSBUPgp2b2lkIEJhcihUKiwgdHlwZW5hbWUgVDo6Zm9vID0gMCkgewogICAgc3RkOjpjb3V0IDw8IF9fUFJFVFRZX0ZVTkNUSU9OX18gPDwgc3RkOjplbmRsOwp9Cgp2b2lkIEJhcih2b2lkKikgewogICAgc3RkOjpjb3V0IDw8IF9fUFJFVFRZX0ZVTkNUSU9OX18gPDwgc3RkOjplbmRsOwp9CgppbnQgbWFpbigpIHsKICAgIEJhcigoRm9vKilOVUxMKTsKfQo=