#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);
}
