【c++11】static_assert: 静态断言 type traits:类型特征
来源:互联网 发布:刺客信条4优化差 编辑:程序博客网 时间:2024/05/22 11:46
static_assert提供一个编译时的断言检查
1、static_assert与assert的不同:
assert(表达式):运行时断言,表达式为false,在运行时打印固定的错误信息,并终止程序。
static_assert(表达式,“想让编译器显示的出错信息”):编译时断言,表达式为false,在编译时显示给定的出错信息。
表达式为true,两者都不做任何事。
assert(true);static_assert(true, "will do nothing");assert(false); // assert宏:运行时断言,将打印一条出错(含cpp文件名、行号)信息并强制终止程序运行static_assert(false, "make a error message"); // 产生一个编译时错误,并提供给定的错误信息:error C2338: make a error message从颜色上可以分辨:static_assert貌似是C++关键字?而assert是一种自定义类型(带参数的宏)
2、type traits是一些class,在编译时提供关于类型的信息。在头文件<type_traits>中可以找到它们
// 同时使用static_assert与type traits实现模板类型编译时检查template <typename T1, typename T2>auto add(T1 t1, T2 t2) -> decltype(t1 + t2){// 确保T1、T2的类型是integral,否则触发编译器报错static_assert(std::is_integral<T1>::value, "Type T1 must be integral");static_assert(std::is_integral<T2>::value, "Type T2 must be integral");return t1 + t2;}void test(){std::cout << add(1, 3.14) << std::endl; // error C2338: Type T2 must be integralstd::cout << add("one", 2) << std::endl; // error C2338: Type T1 must be integralauto r = add(3L, '2'); // ok! long、char都属于整型// typeid用于运行时类型检查,而type traits则是编译时判断std::cout << typeid(r).name() << std::endl; // long}
0 0
- 【c++11】static_assert: 静态断言 type traits:类型特征
- c/c++ 静态断言 static_assert
- 静态断言 static_assert
- static_assert(静态断言)
- 探索C++0x: 1. 静态断言(static_assert)
- Visual C++ 2010新功能之static_assert(静态断言)
- 探索C++0x: 1. 静态断言(static_assert)
- Type Traits
- type traits
- go语言的类型断言(Type Assertion)
- [翻译] Effective C++, 3rd Edition, Item 47: 为类型信息使用 traits classes(特征类)(上)
- [翻译] Effective C++, 3rd Edition, Item 47: 为类型信息使用 traits classes(特征类)(下)
- c++11 静态断言
- static_assert 是在编译时期的断言
- 泛型技巧系列:类型字典和Type Traits
- Type Traits 实例,提高效率
- C++ Type traits
- C++ Type traits
- 随笔记录
- 最近又想学习游泳了,找了点资料
- Android下屏幕适配
- WPF listbox combobox简单绑定
- 解决A master URL must be set in your configuration错误
- 【c++11】static_assert: 静态断言 type traits:类型特征
- 关于i++
- 华为方会提供一份CRS(客户需求)和SOW(工作任务书)
- 2015年10大web预测
- pc机安装centos6.4
- Android实战技巧之十:获得屏幕物理尺寸、密度及分辨率
- 还是有一点伤心
- hdu 2057 A + B Again (水题)
- git加速下载