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

c++模板元编程七:类型判断的traits类

时间:2015-04-06 23:21:06      阅读:293      评论:0      收藏:0      [点我收藏+]

标签:c++   metaprogramming   c++11   boost   

2 用于判断类型的traits类

is_void类可以判断模板参数的类型,使用很简单,注意,也可以直接使用::value。

cout << std::is_void<void>::type::value << endl;
cout << std::is_void<bool>::type::value << endl;

但是实现很有趣,特化居然可以用来继承不同的类。这里没有去找clang++实现代码,用boost代码代替吧。

template <typename T>
struct is_void : public false_type{};

template <>
struct is_void<void> : public true_type{};

c++11标准支持的同理还有is_pointer, is_floating_point, is_array, is_lvalue_reference, is_rvalue_reference, is_member_object_pointer, is_member_function_pointer, is_enum, is_union, is_class, is_function。实现代码都很简单,这里再展示一个:

template <typename T>
struct is_pointer : public false_type{};

template <typename T>
struct is_pointer<T*> : public true_type{};

c++模板元编程七:类型判断的traits类

标签:c++   metaprogramming   c++11   boost   

原文地址:http://blog.csdn.net/csfreebird/article/details/44906959

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