简单的一个C++中traits功能的实现例子

原创 2015年07月10日 14:01:41
#include <iostream>

//用于标记不同的类型
struct _false_type {};
struct _true_type {};

//-------------------------------使用模板特例化功能,在不同类型内放置不同的定义类型------------------
template<typename value_type>
struct type_traits
{
	typedef _true_type Can_Print;
};


class MyType
{
};
//此处使用到模板特例化
template<>
struct type_traits<MyType>
{
	typedef _false_type Can_Print;
};


//相当于中转站,根据不同的类型转到不同的实际操作
template<typename value_type>
void Print(value_type value)
{
	typedef typename type_traits<value_type>::Can_Print Can_Print;
	_Print(value, Can_Print());
}

//-----------------------------实际操作如何进行-------------------------
template<typename value_type>
void _Print(value_type value, _false_type)
{
	std::cout << "this type can't printed!" << std::endl;
}

template<typename value_type>
void _Print(value_type value, _true_type)
{
	std::cout << value << std::endl;
}

//主函数
int main(int argc, char const *argv[])
{
	int x = 0;
	Print(x);

	MyType m;
	Print(m);

	std::cin.get();

	return 0;
}

C++ traits编程技法之__type_traits

__type_trivial  双底线前缀,表示是SGI STL以外的东西,不在STL标准范围之内。 __type_trivial负责萃取型别(Type)的特性,究竟是什么特性呢?          ...
  • mmshixing
  • mmshixing
  • 2016年06月13日 13:59
  • 1820

C++traits技术的理解

traits是c++中的自动类型推断,可以用来获得一个类型的相关信息。比如我们有一个泛型的迭代器类,其中T为所指向的类型。 template class myIterator { ... };当我...
  • qq100440110
  • qq100440110
  • 2016年07月07日 22:17
  • 814

JSP+JavaBean编写一个计算器

Java: Jsp:
  • like7xiaoben
  • like7xiaoben
  • 2011年11月06日 16:41
  • 1699

一个简单的适配器模式例子

Java的老一辈开发者应该比较熟悉Vector,Stack,Hashtable等集合类。它们的elements()返回一个实现了Enumeration接口的实现类。 但是自从出现Iterator以后...
  • czjuttsw
  • czjuttsw
  • 2013年02月15日 13:12
  • 2181

JavaBean编写一个计算器

Java: Jsp:
  • WangMan_512
  • WangMan_512
  • 2011年11月07日 21:19
  • 1008

我对C++ Traits编程技法的一点点理解

第一次听说traits是在一次电话面试中,当时还没有听说过这个词。之后查过资料,但也不是十分明白,直到今天重新看了一下《STL源码剖析》,稍微有一些想法。 1. traits是模板编程里面的一个编程...
  • erorr
  • erorr
  • 2014年04月13日 01:37
  • 1493

Java一个简单的死锁例子

内容:一个简单的死锁例子,大概的思路:两个线程A和B,两把锁X和Y,现在A先拿到锁X,然后sleep()一段时间,我们知道sleep()是不会释放锁资源的。然后如果这段时间线程B拿到锁Y,也sleep...
  • u011345136
  • u011345136
  • 2015年05月16日 20:07
  • 1774

JSP练习之简单计算器(使用jsp+javabean模式)

JSP案例之实现一个功能简单的计算器小程序
  • qq791967024
  • qq791967024
  • 2015年01月28日 17:57
  • 2276

Java实现简单的AOP(一)

AOP编程是面向切面编程,说白了,一段代码的执行归根结底是方法的执行,当一个系统写好之后,往往需要新的功能或者添加一些新的操作,这些新的功能又是一些方法,这些方法需要嵌入到原来的系统中,让他们在系统原...
  • yizhenn
  • yizhenn
  • 2016年08月11日 14:02
  • 114

C++中实现一个简单的单向链表

最近在linux了一个简单的单向链表,直接上代码 链表头文件   list.h #ifndef _LIST_H_ #define _LIST_H_ typedef int T; te...
  • u011641755
  • u011641755
  • 2016年09月17日 21:00
  • 1199
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:简单的一个C++中traits功能的实现例子
举报原因:
原因补充:

(最多只允许输入30个字)