`
zhangyafei_kimi
  • 浏览: 266143 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
社区版块
存档分类
最新评论

boost.BOOST_STATIC_ASSERT源码整理和使用说明

 
阅读更多

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

分享到:
评论

相关推荐

    test-assert.rar_games_test assert

    标题中的“test-assert.rar_games_test assert”暗示了这是一个关于测试和断言的项目,可能与游戏开发或软件测试有关。描述中提到的“involving games with stdio and signals”表明这个项目涉及到使用标准输入输出...

    Boost学习笔记

    Boost 是一个广泛使用的 C++ 库,由 C++ 标准库的开发者参与编写,旨在增强 C++ 的功能和实用性。Boost 提供了一系列跨平台的工具和库,适用于 Linux 和 Windows 系统。学习 Boost 对于提升 C++ 开发者的技能和效率...

    人体姿态估计的强大算法

    parse_matlab\util\assert.m parse_matlab\util\printSkel.m parse_matlab\util\sampleWithR.m parse_matlab\util\isum.m parse_matlab\util\buildHistExps.m parse_matlab\util\local_sum_zero.m parse_...

    boost_concept_check.rar_Boost

    Boost库是C++编程语言中的一个开源库集合,它提供了大量的工具、库和函数,以扩展C++的标准库。在给定的“boost_concept_check.rar”压缩包中,我们关注的是Boost的一个特定部分——BoostConceptCheck库。这个库是...

    VisualC++(VC++)编程序软件语言关键字大全集合.pdf

    `safecast`,`sealed`,`selectany`,`short`,`signed`,`sizeof`,`static`,`static_assert`,`static_cast`,`struct`,`switch`,`template`,`this`,`thread`,`throw`,`true`,`try`,`typedef`,`typeid`...

    Boost.org概念检查模块.zip

    Boost库是C++社区的一个重要资源,它提供了一系列的工具、库和编程模式,帮助开发者提升代码质量和效率。其中,“Boost概念检查模块”是Boost库的一部分,它专注于帮助程序员在编译时进行类型检查,确保模板参数符合...

    Boost库导引 ---

    `Boost.StaticAssert`提供静态断言,能在编译时捕获错误。 7. **跨平台兼容性** Boost库的一大优势是它的高度跨平台性,能够在多种操作系统和编译器上无缝工作,包括Windows、Linux、Mac OS等。 8. **容器与迭代...

    Boost库学习之正则表达式

    本文将详细介绍Boost库中的正则表达式部分,特别是`regex_match`、`regex_search`、`regex_replace`以及两种迭代器`regex_iterator`和`regex_token_iterator`的使用。 首先,`boost::regex`类是Boost库的核心组件之...

    VisualC++(VC++)编程序软件语言关键字大全集合参考.pdf

    cast`、`return`、`safecast`、`sealed`、`selectany`、`short`、`signed`、`sizeof`、`static`、`static_assert`、`struct`、`switch`、`template`、`this`、`thread`、`throw`、`true`、`try`、`typedef`、`typeid...

    CUnit-2.1-0-src.zip_CUnit 2.1_CUnit-2.1_CUnit-2.1-0-src.tar._cun

    CUnit 提供了多种断言函数,如 `CU_ASSERT` 和 `CU_ASSERT_EQUAL`,用于判断预期结果和实际结果是否一致。如果断言失败,CUnit将记录下来,并在测试结束后给出详细的失败报告。 在开发过程中,定期运行CUnit测试...

    Linux_c_lib.chm.rar_ Linux_c_lib.chm_c chm_linux C函数_linux c lib

    15. **错误检查和调试**:讲解如何使用assert和gdb进行程序调试。 这本手册对于初学者来说,是理解和掌握Linux系统编程的重要资源,而对于有经验的开发者,它也是一个快速查找函数用法和行为的便捷工具。由于其体积...

    Beyond.the.C++.Standard.Library.An.Introduction.to.Boost.pdf

    Boost库中包含了一系列实用工具类,如`enable_if`、`static_assert`等,这些工具使得编程变得更加简单明了。通过使用这些工具,开发者可以在编译阶段检查条件并根据不同的情况选择合适的类型或模板特化,从而编写出...

    ZendFramework中文文档

    2.3.2. 使用声明(Assert)来编写条件性的 ACL 规则 3. Zend_Auth 3.1. 简介 3.1.1. 适配器 3.1.2. 结果 3.1.3. 身份的持久(Persistence) 3.1.3.1. 在PHP Session 中的缺省持久(Persistence) 3.1.3.2. 实现...

    pytest-mock-1.13.0_testing_python_thin_源码.zip

    `pytest-mock-1.13.0_testing_python_thin_源码.zip`是一个包含`pytest-mock`库1.13.0版本的源代码压缩包,主要用于Python的单元测试和模拟(mocking)功能。`pytest-mock`是`pytest`框架的一个插件,它简化了Python...

    assert,assert_valid,verify,trace用法

    对于开始学vc的人,对于assert,assert_valid,verify,trace的宏感到很奇怪,总是觉得很难掌握似的,其实这些主要是没有理清楚他们各自宏之间深层次的意义。

    empca2.tar.gz_SVD 降维_SVD-pca_pca-svd_奇异值分解pca_奇异值降维

    4. `assert.m` 是MATLAB中的标准函数,用于断言某个条件是否满足,常用于调试和测试,确保代码的正确运行。 这些函数结合使用,可以实现PCA算法并应用于实际数据,进行有效的降维操作。奇异值分解与PCA相结合,为...

    基于gym的pytorch深度强化学习实现源码+项目说明(PPO,DQN,SAC,DDPG,TD3等算法).zip

    1、该资源包括项目的全部源码,下载可以直接使用! 2、本项目适合作为计算机、数学、电子信息等专业的课程设计、期末大作业和毕设项目,作为参考资料学习借鉴。 3、本资源作为“参考资料”如果需要实现其他功能,...

    CPR.zip_CPR_web自动化测试

    指定浏览器类型和URL,然后通过调用各种方法来模拟用户交互,如`get`用于加载网页,`find_element_by_id`或`find_element_by_name`来定位页面元素,`click`来模拟点击,以及`assert_text`或`assert_title`来验证预期...

    downloads.part1.rar

    boost-1.70.0.tar.gz boostorg-any-boost-1.70.0.tar.gz boostorg-array-boost-1.70.0.tar.gz boostorg-asio-boost-1.70.0.tar.gz boostorg-assert-boost-1.70.0.tar.gz boostorg-assign-boost-1.70.0.tar.gz ...

    详解C++编程中断言static_assert的使用

    在编写调试程序时,掌握断言的使用可以更有效地发现程序中的错误,同时static_assert作为C++11新增的特性,它允许在编译时期进行断言检查,因此,开发者应该了解如何在C++中正确使用static_assert断言。 首先,要...

Global site tag (gtag.js) - Google Analytics