码迷,mamicode.com
首页 > 编程语言 > 详细

c++ 类型萃取(模板类型 运用)

时间:2016-01-01 23:15:25      阅读:449      评论:0      收藏:0      [点我收藏+]

标签:c++;类型萃取;模板函数的特化

//类型萃取
#pragma once

#include<iostream>

using namespace std;

struct __TrueType//定义类 普通类型(基本类型的)
{
	bool Get()
	{
		return true;
	}
};

struct __FalseType//定义类 非基本类型
{
	bool Get()
	{
		return false;
	}
};

template <class _Tp>//模板类 (类型萃取)
struct TypeTraits //非基本类型
{
	typedef __FalseType   __IsPODType;
}; 
//将基本类型类 与非基本类型类 重命名(typedef)为相同名
 //调用__IsPODType.Get() 时编译器会根据TypeTraits<class T> T 的实际类型调用 	
//__FalseType	 或 Truetype 的 Get()函数  得到不同 bool值				
struct TypeTraits< bool>			  //	以下为常用基本类型特化
{
	typedef __TrueType     __IsPODType;
};

template <>
struct TypeTraits< char>
{
	typedef __TrueType     __IsPODType;
};

template <>
struct TypeTraits< unsigned char >
{
	typedef __TrueType     __IsPODType;
};

template <>
struct TypeTraits< short>
{
	typedef __TrueType     __IsPODType;
};

template <>
struct TypeTraits< unsigned short >
{
	typedef __TrueType     __IsPODType;
};

template <>
struct TypeTraits< int>
{
	typedef __TrueType     __IsPODType;
};

template <>
struct TypeTraits< unsigned int >
{
	typedef __TrueType     __IsPODType;
};

template <>
struct TypeTraits< long>
{
	typedef __TrueType     __IsPODType;
};

template <>
struct TypeTraits< unsigned long >
{
	typedef __TrueType     __IsPODType;
};

template <>
struct TypeTraits< long long >
{
	typedef __TrueType     __IsPODType;
};

template <>
struct TypeTraits< unsigned long long>
{
	typedef __TrueType     __IsPODType;
};

template <>
struct TypeTraits< float>
{
	typedef __TrueType     __IsPODType;
};

template <>
struct TypeTraits< double>
{
	typedef __TrueType     __IsPODType;
};

template <>
struct TypeTraits< long double >
{
	typedef __TrueType     __IsPODType;
};

template <class _Tp>
struct TypeTraits< _Tp*>
{
	typedef __TrueType     __IsPODType;
};


c++ 类型萃取(模板类型 运用)

标签:c++;类型萃取;模板函数的特化

原文地址:http://shaungqiran.blog.51cto.com/10532904/1730642

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!