[ create a new paste ] login | about

Link: http://codepad.org/wqRrRhtB    [ raw code | output | fork ]

C++, pasted on Jun 25:
#include <iostream>
using namespace std;

template<typename T> class IsFundamental{
public:
	enum { Yes = 0, No = 1 };
};

template<> class IsFundamental<int>{
public:
	enum { Yes = 1, No = 0 };
};

#define MK_FUND_TYPE(T)				\
template<> class IsFundamental<T>{	\
public:								\
	enum { Yes = 1, No = 0 };		\
}

MK_FUND_TYPE(double);
MK_FUND_TYPE(float);
MK_FUND_TYPE(char);
MK_FUND_TYPE(void);
MK_FUND_TYPE(bool);
//MK_FUND_TYPE(int);
//...........


class MyType{};

int main()
{

	if(IsFundamental<int>::Yes)
		std::cout << "Ok..\n";

	if(IsFundamental<float>::Yes)
		std::cout << "Ok..\n";

	if(IsFundamental<int*>::Yes)
		std::cout << "((((..\n";

	if(IsFundamental<MyType>::Yes)
		std::cout << "((((..\n";

	return 0;
}


Output:
1
2
Ok..
Ok..


Create a new paste based on this one


Comments: