#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;
}