#include <iostream>
#include <string>
#include <type_traits>
#include <memory>
using namespace std;
int main() {
cout << is_arithmetic<long long>::value << endl;
cout << is_arithmetic<uint64_t>::value << endl;
cout << is_arithmetic<bool>::value << endl;
cout << is_integral<bool>::value << endl;
cout << is_integral<bool*>::value << endl;
cout << endl;
cout << !is_convertible<shared_ptr<string>, bool>::value << endl;
cout << is_arithmetic<shared_ptr<string>>::value << endl;
shared_ptr<string> bbb = nullptr;
if (!bbb) {
cout << "bbb" << endl;
}
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8c3RyaW5nPgojaW5jbHVkZSA8dHlwZV90cmFpdHM+CiNpbmNsdWRlIDxtZW1vcnk+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CgppbnQgbWFpbigpIHsKICBjb3V0IDw8IGlzX2FyaXRobWV0aWM8bG9uZyBsb25nPjo6dmFsdWUgPDwgZW5kbDsKICBjb3V0IDw8IGlzX2FyaXRobWV0aWM8dWludDY0X3Q+Ojp2YWx1ZSA8PCBlbmRsOwogIGNvdXQgPDwgaXNfYXJpdGhtZXRpYzxib29sPjo6dmFsdWUgPDwgZW5kbDsKICBjb3V0IDw8IGlzX2ludGVncmFsPGJvb2w+Ojp2YWx1ZSA8PCBlbmRsOwogIGNvdXQgPDwgaXNfaW50ZWdyYWw8Ym9vbCo+Ojp2YWx1ZSA8PCBlbmRsOwogIGNvdXQgPDwgZW5kbDsKICAKICBjb3V0IDw8ICFpc19jb252ZXJ0aWJsZTxzaGFyZWRfcHRyPHN0cmluZz4sIGJvb2w+Ojp2YWx1ZSA8PCBlbmRsOwogIGNvdXQgPDwgaXNfYXJpdGhtZXRpYzxzaGFyZWRfcHRyPHN0cmluZz4+Ojp2YWx1ZSA8PCBlbmRsOwogIAogIHNoYXJlZF9wdHI8c3RyaW5nPiBiYmIgPSBudWxscHRyOwogIGlmICghYmJiKSB7CiAgICBjb3V0IDw8ICJiYmIiIDw8IGVuZGw7CiAgfQp9