简单的一个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;
}

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

一个简单的例子看明白如何利用window.location.hash实现ajax操作时浏览器的前进/后退功能

我们知道JavaScript中很早就提供了window.history对象,利用history对象的forward()、go()、back()方法能够方便实现不同页面之间的前进、后退等这种导航功能。但...

C++中提供了多种基本的数据类型。实际上,这些远不能满足我们的需求,如复数(第10章的例子大多是处理虚数的),再如分数。本任务将设计一个简单的分数类,完成对分数的几个运算。一则巩固基于对象编程的方法,

#include using namespace std; class CFraction {private: int nume; // 分子 int deno; // 分...

C++——一个简单的多文件具体例子

(From 九天雁翎) Person.h #include  #include  class Person { public: Person(const std::string...
  • hcbbt
  • hcbbt
  • 2013-04-26 00:32
  • 983

DIY一个C++ traits来判断enum是否有用户自定义的operator<<

前段时间发现自己的String库中有个bug: String& operator+=(int); String& operator+=(unsigned); // 所有的整型、浮点型都有一个...

C++调用Lua读取配置文件的一个简单例子

首先顶一个Lua的处理类 #ifndef _LUA_HANDLER_H_ #define _LUA_HANDLER_H_ extern "C" { #include #include #incl...

Spring+JMS+使用JMS+ActiveMQ中间件+实现简单聊天功能的小例子

当前,CORBA、DCOM、RMI等RPC中间件技术已经广泛应用于各个领域。但是这些中间件的局限性很明显,主要表现在以下方面: (1)同步通信:客户发出调用后,必须等待服务对象的完成处理并返回结果后...

c++实现ros by example volume1 例子timed_out_and_back功能

之前没有查找相关资料,过后发现有相似功能例程,网址:http://blog.csdn.net/scliu12345/article/details/44538927 之前以为ros::Rate 时间片...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

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