#include <utility>
#include <type_traits>
template <typename T>
class A {
public:
template <typename U = T>
void b(typename std::enable_if<!std::is_pointer<U>::value, U>::type o);
template <typename U = T>
void b(typename std::enable_if<std::is_pointer<U>::value, U>::type o);
};
template <typename T>
template <typename U>
void A<T>::b(typename std::enable_if<!std::is_pointer<U>::value, U>::type o) {}
template <typename T>
template <typename U>
void A<T>::b(typename std::enable_if<std::is_pointer<U>::value, U>::type o) {}
int main() {
A<int> a;
a.b(0);
}
I2luY2x1ZGUgPHV0aWxpdHk+CiNpbmNsdWRlIDx0eXBlX3RyYWl0cz4KCnRlbXBsYXRlIDx0eXBlbmFtZSBUPgpjbGFzcyBBIHsgIApwdWJsaWM6CiAgdGVtcGxhdGUgPHR5cGVuYW1lIFUgPSBUPgogIHZvaWQgYih0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjwhc3RkOjppc19wb2ludGVyPFU+Ojp2YWx1ZSwgVT46OnR5cGUgbyk7CgogIHRlbXBsYXRlIDx0eXBlbmFtZSBVID0gVD4KICB2b2lkIGIodHlwZW5hbWUgc3RkOjplbmFibGVfaWY8c3RkOjppc19wb2ludGVyPFU+Ojp2YWx1ZSwgVT46OnR5cGUgbyk7Cn07Cgp0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KdGVtcGxhdGUgPHR5cGVuYW1lIFU+CnZvaWQgQTxUPjo6Yih0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjwhc3RkOjppc19wb2ludGVyPFU+Ojp2YWx1ZSwgVT46OnR5cGUgbykge30gIAoKdGVtcGxhdGUgPHR5cGVuYW1lIFQ+ICAKdGVtcGxhdGUgPHR5cGVuYW1lIFU+CnZvaWQgQTxUPjo6Yih0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjxzdGQ6OmlzX3BvaW50ZXI8VT46OnZhbHVlLCBVPjo6dHlwZSBvKSB7fSAKCgppbnQgbWFpbigpIHsKICAgIEE8aW50PiBhOwogICAgYS5iKDApOwp9