#include <iostream>
#include <type_traits>
template<typename T, bool IsIntegral = std::is_integral<T>::value>
struct Obj {
template<bool _ = IsIntegral>
static constexpr bool fcuk (typename std::enable_if< _>::type* p = nullptr) { return true;}
template<bool _ = IsIntegral>
static constexpr bool fcuk (typename std::enable_if<!_>::type* p = nullptr) {return false;}
};
/* vs
*
template<typename T, bool IsIntegral = std::is_integral<T>::value>
struct Obj {
static constexpr bool fcuk (typename std::enable_if< IsIntegral>::type* p = nullptr) {return true;}
static constexpr bool fcuk (typename std::enable_if<!IsIntegral>::type* p = nullptr) {return false;}
};
*/
int
main (int argc, char *argv[])
{
std::cerr << Obj<int >::fcuk () << " ";
std::cerr << Obj<int*>::fcuk () << " ";
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8dHlwZV90cmFpdHM+Cgp0ZW1wbGF0ZTx0eXBlbmFtZSBULCBib29sIElzSW50ZWdyYWwgPSBzdGQ6OmlzX2ludGVncmFsPFQ+Ojp2YWx1ZT4Kc3RydWN0IE9iaiB7CiAgdGVtcGxhdGU8Ym9vbCBfID0gSXNJbnRlZ3JhbD4KICBzdGF0aWMgY29uc3RleHByIGJvb2wgZmN1ayAodHlwZW5hbWUgc3RkOjplbmFibGVfaWY8IF8+Ojp0eXBlKiBwID0gbnVsbHB0cikgeyByZXR1cm4gdHJ1ZTt9CgogIHRlbXBsYXRlPGJvb2wgXyA9IElzSW50ZWdyYWw+CiAgc3RhdGljIGNvbnN0ZXhwciBib29sIGZjdWsgKHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmPCFfPjo6dHlwZSogcCA9IG51bGxwdHIpIHtyZXR1cm4gZmFsc2U7fQp9OwoKCi8qIHZzCiAqCiAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCBib29sIElzSW50ZWdyYWwgPSBzdGQ6OmlzX2ludGVncmFsPFQ+Ojp2YWx1ZT4KICAgIHN0cnVjdCBPYmogewogICAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgZmN1ayAodHlwZW5hbWUgc3RkOjplbmFibGVfaWY8IElzSW50ZWdyYWw+Ojp0eXBlKiBwID0gbnVsbHB0cikge3JldHVybiAgdHJ1ZTt9CiAgICAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBmY3VrICh0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjwhSXNJbnRlZ3JhbD46OnR5cGUqIHAgPSBudWxscHRyKSB7cmV0dXJuIGZhbHNlO30KICAgIH07CiovCgppbnQKbWFpbiAoaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKewogIHN0ZDo6Y2VyciA8PCBPYmo8aW50ID46OmZjdWsgKCkgPDwgIiAiOwogIHN0ZDo6Y2VyciA8PCBPYmo8aW50Kj46OmZjdWsgKCkgPDwgIiAiOwp9Cg==