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

来源:互联网 发布:javascript启示录 云盘 编辑:程序博客网 时间:2024/05/16 12:39
#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;}

0 0
原创粉丝点击