#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