首页 > 代码库 > boost静态断言的简单实现
boost静态断言的简单实现
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静态断言的简单实现
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。