STL 학습 노트 (3) 함수 모형

1337 단어
함수 템플릿은 부분 특화를 진행할 수 없습니다
함수 모듈 매개 변수의 형식 컴파일러는 추정할 수 있고 생략할 수 있지만, 반환값 형식은 써야 한다.
#include <iostream>
#include <typeinfo>
using namespace std;

template <typename T>
class Type
{
public:
	static  string name()
	{
		return typeid(T).name();
	}
};

template <>
class Type<char>
{
public:
	static  string name()
	{
		return "char";
	}	
};

template <>
class Type<bool>
{
public:
	static  string name()
	{
		return "bool";
	}	
};

template<>
class Type<double>
{
	public:
	static  string  name()
	{
		return "double";
	}
};

template<>
class Type<int>
{
public:
	static string name()
	{
		return "int";
	}
};

template<typename T>
class Type<T *>
{
public:
	static string name()
	{
		return Type<T>::name()+" pointer";
	}
};

//    
template <typename T>
string type(T t)
{
	return Type<T>::name();
}

int main()
{
	//       :                
	cout << type(123) << endl;
	cout << type(45.6) << endl;
	
	cout << "-------------------------------" << endl;
	int a = 10;
	char b = 'k';
	cout << type(a*1.0) << endl;
	cout << type(a < b) << endl;
	cout << type(&a) << endl;
}

좋은 웹페이지 즐겨찾기