#include <iostream>
template < typename X, typename Y = typename X:: template rebind< int >>
struct has_rebind : std:: false_type { } ;
template < typename X>
struct has_rebind< X, typename X:: template rebind< int >> : std:: true_type { } ;
struct A { } ;
struct B { template < typename > struct rebind { } ; } ;
int main( ) {
std:: cout << has_rebind< A> :: value << std:: endl ;
std:: cout << has_rebind< B> :: value << std:: endl ;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgogICAgCnRlbXBsYXRlIDx0eXBlbmFtZSBYLCB0eXBlbmFtZSBZID0gdHlwZW5hbWUgWDo6dGVtcGxhdGUgcmViaW5kPGludD4+CnN0cnVjdCBoYXNfcmViaW5kIDogc3RkOjpmYWxzZV90eXBlIHt9OwoKdGVtcGxhdGUgPHR5cGVuYW1lIFg+CnN0cnVjdCBoYXNfcmViaW5kPFgsIHR5cGVuYW1lIFg6OnRlbXBsYXRlIHJlYmluZDxpbnQ+PiA6IHN0ZDo6dHJ1ZV90eXBlIHt9OwoKc3RydWN0IEEgeyB9OwpzdHJ1Y3QgQiB7IHRlbXBsYXRlIDx0eXBlbmFtZSA+IHN0cnVjdCByZWJpbmQgeyB9OyB9OwoKaW50IG1haW4oKSB7CiAgICBzdGQ6OmNvdXQgPDwgaGFzX3JlYmluZDxBPjo6dmFsdWUgPDwgc3RkOjplbmRsOwogICAgc3RkOjpjb3V0IDw8IGhhc19yZWJpbmQ8Qj46OnZhbHVlIDw8IHN0ZDo6ZW5kbDsKfQ==