boost.BOOST_STATIC_ASSERT源码整理和使用说明
来源:互联网 发布:淘宝店名如何修改 编辑:程序博客网 时间:2024/05/07 02:31
Source
#include <boost/config.hpp>
#include <boost/detail/workaround.hpp>
//
namespace kimi_boost
{
//这个模板类只有声明,没有定义
//注意:这里没有{}
//所以如果定义这个类型的对象将会失败
template <bool> struct STATIC_ASSERTION_FAILURE2;
//一个true类型的完全特化,并且带定义
template <> struct STATIC_ASSERTION_FAILURE2<true>{};
template<int x> struct static_assert_test2{};
#ifdef BOOST_STATIC_ASSERT
#undef BOOST_STATIC_ASSERT
#define BOOST_STATIC_ASSERT(B) typedef static_assert_test2< sizeof(STATIC_ASSERTION_FAILURE2< (bool)( B ) >) > nothing##__COUNTER__
#endif //BOOST_STATIC_ASSERT
}
Test code
void static_assert_test()
{
using namespace kimi_boost;
BOOST_STATIC_ASSERT(1);
BOOST_STATIC_ASSERT(1 == 1);
BOOST_STATIC_ASSERT(true);
BOOST_STATIC_ASSERT(0); //compile error
STATIC_ASSERTION_FAILURE2<true> asd;
STATIC_ASSERTION_FAILURE2<false> asd2;
}
Output
Compile time error
- boost.BOOST_STATIC_ASSERT源码整理和使用说明
- boost.pool源码整理和使用说明
- boost.any源码整理和使用说明
- boost.array源码整理和使用说明
- boost.shared_ptr源码整理和使用说明
- boost.lexical_cast源码整理和使用说明
- boost.type_traits源码整理和使用说明(1)
- boost.tuple源码整理和使用说明
- Boost学习笔记 BOOST_STATIC_ASSERT
- boost学习之-BOOST_STATIC_ASSERT
- Boost学习笔记 BOOST_STATIC_ASSERT
- Boost学习笔记 BOOST_STATIC_ASSERT
- BOOST_STATIC_ASSERT
- C++学习 boost学习之-BOOST_STATIC_ASSERT
- BOOST_STATIC_ASSERT和assert的区别
- [C++] BOOST_STATIC_ASSERT和assert的区别
- boost库使用说明
- boost日志使用说明
- 起名程序开发
- boost.any源码整理和使用说明
- boost.array源码整理和使用说明
- 啊
- 利用servlet生成简单的验证码
- boost.BOOST_STATIC_ASSERT源码整理和使用说明
- boost.shared_ptr源码整理和使用说明
- JSP的九个隐含对象
- boost.lexical_cast源码整理和使用说明
- 送弟弟阿亮回家
- 编译期判断类的继承性
- 编译Apache遇到的一个问题
- Eclipse开发调试RMI指南 (转)
- 寻求改变和自我突破--第一桶金是基础