#include using namespace std; template class foo { public: static void max_min() { cout << typeid(T).name() << " min= " << numeric_limits::min() << " max= " << numeric_limits::max() << endl; } }; main(){ foo::max_min(); // using max_min without having an object of foo cout << "char " << sizeof(char) << endl; cout << "wchar_t " << sizeof(wchar_t) << endl; cout << "short " << sizeof(short) << endl; cout << "int " << sizeof(int) << endl; cout << "long " << sizeof(long) << endl; cout << "long long" << sizeof(long long) << endl << endl; cout << "float " << sizeof(float) << endl; cout << "double " << sizeof(double) << endl; cout << "long double " << sizeof(long double) << endl; cout << "--------------------Sizes of enum " << endl; enum my_alpha {a,b,c,d}; cout << "enum " << sizeof(my_alpha) << endl; cout << "------------------Sizes of pointers of types" << endl; cout << "function " << sizeof(int (*)()) << endl; cout << "bool " << sizeof(bool *) << endl; cout << "char " << sizeof(char *) << endl; cout << "short " << sizeof(short *) << endl; cout << "int " << sizeof(int *) << endl; cout << "long " << sizeof(long *) << endl; cout << "float " << sizeof(float *) << endl; cout << "double " << sizeof(double *) << endl; }