#include <iostream>
#include <typeinfo>
#include <type_traits>
template <int SZ>
class Internal
{
char arr[SZ];
};
template < int SZ>
struct helper
{
typedef typename std::conditional<(SZ > 1000 && SZ <9999),Internal<SZ>,Internal<1> >::type type;
};
template < int SZ>
struct A : public helper<SZ>::type
{
typedef typename helper<SZ>::type base;
};
int main() {
std::cout << typeid(A<1024>::base).name() << std::endl;
A<1024> x;
std::cout << typeid(A<-34>::base).name() << std::endl;
A<-34> y;
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8dHlwZWluZm8+CiNpbmNsdWRlIDx0eXBlX3RyYWl0cz4KCgp0ZW1wbGF0ZSA8aW50IFNaPgpjbGFzcyBJbnRlcm5hbCAKewogICAgY2hhciBhcnJbU1pdOwp9OwoKdGVtcGxhdGUgPCBpbnQgU1o+CiBzdHJ1Y3QgIGhlbHBlciAKIHsKIHR5cGVkZWYgdHlwZW5hbWUgc3RkOjpjb25kaXRpb25hbDwoU1ogPiAxMDAwICYmIFNaIDw5OTk5KSxJbnRlcm5hbDxTWj4sSW50ZXJuYWw8MT4gPjo6dHlwZSB0eXBlOwogfTsKIAogdGVtcGxhdGUgPCBpbnQgU1o+CiBzdHJ1Y3QgQSA6IHB1YmxpYyAgaGVscGVyPFNaPjo6dHlwZQogewogCXR5cGVkZWYgIHR5cGVuYW1lIGhlbHBlcjxTWj46OnR5cGUgYmFzZTsKIH07CgppbnQgbWFpbigpIHsKIHN0ZDo6Y291dCA8PCB0eXBlaWQoQTwxMDI0Pjo6YmFzZSkubmFtZSgpIDw8IHN0ZDo6ZW5kbDsKIEE8MTAyND4geDsKIHN0ZDo6Y291dCA8PCB0eXBlaWQoQTwtMzQ+OjpiYXNlKS5uYW1lKCkgPDwgc3RkOjplbmRsOwogQTwtMzQ+IHk7CiByZXR1cm4gMDsKfQ==