是否可以在C++中使用编译时断言
Is it possible to use compile time asserts in C++
我想使用模板进行一些数据处理,但我需要代码在移植时或多或少是安全的。
如果变量的大小超过预期值,这可能是一个问题,因此我想在编译时断言某些假设仍然有效。
例如,sizeof(long)>sizeof(int)
,这样如果这个假设失败,我可以破坏构建。
我知道标准要求long>=int
,但这只是一个示例,不要专注于变量类型。
C++11 有static_assert
:
static_assert(sizeof(long) > sizeof(int), "long must be greater than int");
在较旧的编译器上,您可以使用 Boost.StaticAssert。
BOOST_STATIC_ASSERT(sizeof(long) > sizeof(int));
相关文章:
- 二叉排序树无法编译
- 编译时未启用intel oneApi CUDA支持
- 在VS代码中交叉编译Windows与Linux上的MinGW的SDL程序
- 编译包含字符串的代码时遇到问题
- 编译时断言不可靠
- 静态断言,如果在编译时不知道表达
- C++:编译时断言浮点数的值
- 用于检查编译时间常数的静态断言未传递给宏
- 在没有-DNDEBUG和-O3的情况下编译时,标准库实现不使用断言有什么原因吗
- 在QT框架中编译比特币-QT应用程序时断言失败错误
- 是否可以在C++中使用编译时断言
- G++ 不编译带有断言的 constexpr 函数
- 带有自定义消息的基于模板的编译时断言只能在某些编译器中编译
- 如何创建一个编译时断言模板是特定类型的?
- 编译时对数据类型大小进行断言
- c++中的编译时断言
- c++编译类型资源所有者断言
- 如何断言应该使用c++ 11来编译我的程序
- 编译时断言
- 编译时断言,当并非所有枚举值都在 C++ 的 switch 语句中处理时