#include <iostream>
using namespace std;
template <typename T>
class has_helloworld
{
typedef char yes;
typedef long no;
template <typename C>
static yes test(typename C::helloworld*);
template <typename C>
static no test(...);
public:
enum { value = sizeof(test<T>(nullptr)) == sizeof(yes) };
};
class has_helloworld_class {
public:
void helloworld() {};
};
class no_helloworld_class {
};
int main () {
cout << has_helloworld<has_helloworld_class>::value << endl;
cout << has_helloworld<no_helloworld_class> ::value << endl;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwogCnRlbXBsYXRlIDx0eXBlbmFtZSBUPgpjbGFzcyBoYXNfaGVsbG93b3JsZAp7Cgl0eXBlZGVmIGNoYXIgeWVzOwoJdHlwZWRlZiBsb25nIG5vOwogCgl0ZW1wbGF0ZSA8dHlwZW5hbWUgQz4KCXN0YXRpYyB5ZXMgdGVzdCh0eXBlbmFtZSBDOjpoZWxsb3dvcmxkKik7CiAKCXRlbXBsYXRlIDx0eXBlbmFtZSBDPgoJc3RhdGljIG5vIHRlc3QoLi4uKTsKIApwdWJsaWM6CgllbnVtIHsgdmFsdWUgPSBzaXplb2YodGVzdDxUPihudWxscHRyKSkgPT0gc2l6ZW9mKHllcykgfTsKfTsKIApjbGFzcyBoYXNfaGVsbG93b3JsZF9jbGFzcyB7CnB1YmxpYzoKCXZvaWQgaGVsbG93b3JsZCgpIHt9Owp9OwogCmNsYXNzIG5vX2hlbGxvd29ybGRfY2xhc3Mgewp9OwogCmludCBtYWluICgpIHsKCWNvdXQgPDwgaGFzX2hlbGxvd29ybGQ8aGFzX2hlbGxvd29ybGRfY2xhc3M+Ojp2YWx1ZSA8PCBlbmRsOwoJY291dCA8PCBoYXNfaGVsbG93b3JsZDxub19oZWxsb3dvcmxkX2NsYXNzPiA6OnZhbHVlIDw8IGVuZGw7Cn0=