C++11 特征之 静态断言

C++11 支持 静态断言,和之前的 assert 运行时断言机制形成互补

调用形式:

static_assert(sizeof(int) == 4, "error: (int) size error ");

当条件不满足的时候,编译器就是提示后面的那句话

要注意的就是 静态断言条件 最好写在函数体的外面 ,这样和可以和函数调用区分开来。

时间: 2024-10-26 06:48:28

C++11 特征之 静态断言的相关文章

C++11 新特性,运行时断言与静态断言

C98或C99中的库为:<cassert> 或<assert.h> 运行时断言,故明思议是当程序在运行的时候才作为判决,可以认为是对参数的有效性的判断. 而静态断言,是对参数的条件判断提前做了,在预编译的时候进行完成的.如: //demo1.cpp #include <cassert> using namespace std; char *arrayAolloc(int n){ assert(n>0); return new char [n]; } int mai

C++11 静态断言(static_assert)

简介 C++0x中引入了static_assert这个关键字,用来做编译期间的断言,因此叫做静态断言. 其语法很简单:static_assert(常量表达式,提示字符串). 如果第一个参数常量表达式的值为真(true或者非零值),那么static_assert不做任何事情,就像它不存在一样,否则会产生一条编译错误,错误位置就是该static_assert语句所在行,错误提示就是第二个参数提示字符串. 说明 使用static_assert,我们可以在编译期间发现更多的错误,用编译器来强制保证一些契

c++11 静态断言

c++11 静态断言 #define _CRT_SECURE_NO_WARNINGS #include <iostream> #include <string> #include <vector> #include <map> void mytest() { bool flag = false; // 在程序运行阶段进行检测,如果条件为真,程序正常执行,如果为假,终止程序,提示错误 // 需要包含 assert.h 头文件,实现是一个宏,禁用断言可以使用 #

【C/C++学院】0816-引用包装器/仿函数/转义字符 R”()”/using别名/模板元编程 比递归优化/智能指针/多线程/静态断言以及调试技能的要求 assert

引用包装器  std::ref(变量) #include<iostream> template<class T> void com(T arg)//模板函数,引用无效,引用包装器 { std::cout <<"com ="<< &arg << "\n"; arg++; } void main() { int count = 10; int & rcount = count; com(coun

转:探索C++0x: 1. 静态断言(static_assert)

转自:http://www.cppblog.com/thesys/articles/116985.html 简介 C++0x中引入了static_assert这个关键字,用来做编译期间的断言,因此叫做静态断言. 其语法很简单:static_assert(常量表达式,提示字符串). 如果第一个参数常量表达式的值为真(true或者非零值),那么static_assert不做任何事情,就像它不存在一样,否则会产生一条编译错误,错误位置就是该static_assert语句所在行,错误提示就是第二个参数提

c语言静态断言-定义自己的静态断言

c语言里面可以自己定义静态断言,更加方便的调试代码. 使用静态断言 1 #include<stdio.h> 2 #include<stdlib.h> 3 #include<assert.h> 4 5 void main() 6 { 7 int num = 30; 8 assert(num < 20); //num<20 就是正常,否则异常 9 printf("%d",num); 10 } 用自己定义的静态断言来实现 1 #include&

基础知识(11)- 异常、断言、日志和调试

11.1 处理错误  11.1.1 异常分类  11.1.2 声明已检查异常  11.1.3 如何抛出异常  11.1.4 创建异常类 11.2 捕获异常  11.2.1 捕获多个异常  11.2.2 再次抛出异常与异常链  11.2.3 finally子句  11.2.4 带资源的try语句  11.2.5 分析堆栈跟踪元素 11.3 使用异常机制的技巧 11.4 使用断言  11.4.1 启用和禁用断言  11.4.2 使用断言完成参数检查  11.4.3 为文档假设使用断言 11.5 记录

C++断言与静态断言

断言是很早之前就有的东西了,只需要引入cassert头文件即可使用.往往assert被用于检查不可能发生的行为,来确保开发者在调试阶段尽早发现“不可能”事件真的发生了,如果真的发生了,那么就表示代码的逻辑存在问题.最好的一点就是,断言只在Debug中生效,因此对于Release版本是没有效率上的影响的. #include <iostream> #include <cassert> using namespace std; int main() { int i = 22; asser

boost静态断言的简单实现

boost的静态断言可以实现在编译器就检测错误的类型或语法错误,能降低运行时可能发生的错误情况,充分利用编译器提供的优势.静态断言的核心实现是通过模板的偏特化来只声明不实现,如下是我实现的一个简单的静态断言 template<bool> struct static_assert; template<> struct static_assert<true> {}; 这里实现了true模式的类实现,但是没有实现false模式的类实现,所以如果一旦条件是false,声明一个s