练手之用STL类型区分应用
来源:互联网 发布:比特彗星网络设置 编辑:程序博客网 时间:2024/05/16 10:21
#include <iostream>
using namespace std;
//一些模板练手时的小应用辨别基本类型和自定义类型
//使用方法就是便举有限的基本类型,无他
//基本类模板枚举非基本类型
template < typename T>
class IsFoundationType
{
public:
enum{ Yes = 0, No = 1 };
};
//宏定义MACRO_FOUNDATION_TYPE(T)特化依次调用特化所有
//基本数据类型枚举为Yes = 1
#define MACRO_FOUNDATION_TYPE(T) /
template<> class IsFoundationType<T> /
{ /
public: /
enum{ Yes = 1, No = 0 }; /
}; /
//使用宏进行特化以便得到最特殊的实例点
MACRO_FOUNDATION_TYPE(void)
MACRO_FOUNDATION_TYPE(bool)
MACRO_FOUNDATION_TYPE(char)
MACRO_FOUNDATION_TYPE(unsigned char)
MACRO_FOUNDATION_TYPE(wchar_t)
MACRO_FOUNDATION_TYPE(short)
MACRO_FOUNDATION_TYPE(signed int)
MACRO_FOUNDATION_TYPE(unsigned int)
MACRO_FOUNDATION_TYPE(signed long)
MACRO_FOUNDATION_TYPE(unsigned long)
#if LONGLONG_EXISTS
MACRO_FOUNDATION_TYPE(signed long long)
MACRO_FOUNDATION_TYPE(unsigned long long )
#endif
MACRO_FOUNDATION_TYPE(double)
MACRO_FOUNDATION_TYPE(float)
MACRO_FOUNDATION_TYPE(long double)
//测试的函数模板,可以看看非常简单但是这种思想
//还是比较有用,穷举有限数目匹配。
template <typename T>
void test( T const& t )
{
if( IsFoundationType<T>::Yes )
{
cout<<"T is fundamental type"<<endl;
}
else
{
cout<<"T isn't fundamental type"<<endl;
}
if( IsDouble<T>::Yes )
{
cout<<"T is double type"<<endl;
}
else
{
cout<<"T isn't double type"<<endl;
}
}
- 练手之用STL类型区分应用
- STL之string类型
- 剖析JavaScript传值[区分基本类型和应用类型]
- STL之multiset应用。
- STL 应用之set
- STL应用之大根堆小根堆
- stl 之应用
- STL应用之大根堆小根堆
- Android之简易天气预报小应用(xml解析练手)
- Android之简易天气预报小应用(xml解析练手)
- Java小白练手之传统贪吃蛇应用
- 类型区分
- STL 练手题 一种排序
- 25STL之String类型
- 写应用练手总结
- 练手Android应用
- STL简单应用之排序
- stl之vector的应用
- JSP+Java Bean访问MySQL数据库
- 又来了
- 再增加一些英语学习网址
- 停下你正在回帖的龌龊的双手..!!
- 有关在DATAGRID中回车时返回主窗体控件焦点定位的解决办法.
- 练手之用STL类型区分应用
- 使用servlet和Java Bean访问MySQL
- 三种平滑滤波器的比较(均值,中值和带方向特性的边沿保持)
- AppFuse 第一天
- 郎咸平——“担保圈”最终要损害银行和小股民
- 字符串小结--菜鸟文章,老鸟多多指点!
- 简单工厂模式(Simple Factory)
- C++ GUI Programming with Qt3(系列四 试翻)
- C语言经典问题集