#include <iostream>
template<typename T, T ptr>
struct X
{
void f() { std::cout << "primary" << std::endl; }
};
template<>
struct X<std::nullptr_t, nullptr>
{
void f() { std::cout << "specialization" << std::endl; }
};
const int i = 10;
int main() {
X<int, i>().f();
X<std::nullptr_t, nullptr>().f();
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgoKdGVtcGxhdGU8dHlwZW5hbWUgVCwgVCBwdHI+CnN0cnVjdCBYCnsKCXZvaWQgZigpIHsgc3RkOjpjb3V0IDw8ICJwcmltYXJ5IiA8PCBzdGQ6OmVuZGw7IH0KfTsKCnRlbXBsYXRlPD4Kc3RydWN0IFg8c3RkOjpudWxscHRyX3QsIG51bGxwdHI+CnsKCXZvaWQgZigpIHsgc3RkOjpjb3V0IDw8ICJzcGVjaWFsaXphdGlvbiIgPDwgc3RkOjplbmRsOyB9Cn07CgoKY29uc3QgaW50IGkgPSAxMDsKaW50IG1haW4oKSB7CgkKCVg8aW50LCBpPigpLmYoKTsKCVg8c3RkOjpudWxscHRyX3QsIG51bGxwdHI+KCkuZigpOwoJcmV0dXJuIDA7Cn0=