码迷,mamicode.com
首页 > 其他好文 > 详细

boost静态断言的简单实现

时间:2014-09-11 12:35:31      阅读:142      评论:0      收藏:0      [点我收藏+]

标签:boost   static_assert   

boost的静态断言可以实现在编译器就检测错误的类型或语法错误,能降低运行时可能发生的错误情况,充分利用编译器提供的优势。静态断言的核心实现是通过模板的偏特化来只声明不实现,如下是我实现的一个简单的静态断言


template<bool>

struct static_assert;


template<>

struct static_assert<true> {};

这里实现了true模式的类实现,但是没有实现false模式的类实现,所以如果一旦条件是false,声明一个static_assert的变量则肯定会编译失败

定义一个static_assert的变量就完成了条件的判断

static_assert<Cond>();


这里我们来定义一个宏来简化这个工作

#define STATIC_ASSERT(Cond) \

(void)static_assert<Cond>()


所以最后的结果就是

STATIC_ASSERT(0==0);

STATIC_ASSERT(1==0);//编译不过




boost静态断言的简单实现

标签:boost   static_assert   

原文地址:http://blog.csdn.net/davidsu33/article/details/39204155

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