#include <iostream>
using namespace std;
template<typename T> // primary template
struct is_int : std::false_type
{};
template<> // explicit specialization for T = int
struct is_int<int> : std::true_type
{};
template <typename T>
constexpr bool is_int_v = is_int<T>::value;
int main() {
std::cout << is_int_v<char> << std::endl; // prints 0 (false)
std::cout << is_int<int>::value << std::endl; // prints 1 (true)
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKdGVtcGxhdGU8dHlwZW5hbWUgVD4gICAvLyBwcmltYXJ5IHRlbXBsYXRlCnN0cnVjdCBpc19pbnQgOiBzdGQ6OmZhbHNlX3R5cGUKe307Cgp0ZW1wbGF0ZTw+ICAvLyBleHBsaWNpdCBzcGVjaWFsaXphdGlvbiBmb3IgVCA9IGludApzdHJ1Y3QgaXNfaW50PGludD4gOiBzdGQ6OnRydWVfdHlwZQp7fTsKCnRlbXBsYXRlIDx0eXBlbmFtZSBUPgpjb25zdGV4cHIgYm9vbCBpc19pbnRfdiA9IGlzX2ludDxUPjo6dmFsdWU7CgppbnQgbWFpbigpIHsKICAgIHN0ZDo6Y291dCA8PCBpc19pbnRfdjxjaGFyPiA8PCBzdGQ6OmVuZGw7ICAvLyBwcmludHMgMCAoZmFsc2UpCiAgICBzdGQ6OmNvdXQgPDwgaXNfaW50PGludD46OnZhbHVlIDw8IHN0ZDo6ZW5kbDsgICAvLyBwcmludHMgMSAodHJ1ZSkKICAgIHJldHVybiAwOwp9