在编译时验证的断言语句。 C ++ 11 / C ++ 14的一个特性,自4.3以来由gcc支持
static_assert 在 consteval 构造函数中被拒绝
结构测试{ 整数变量; consteval 测试(int i) : var{i} { static_assert(i == 3); } }; int main() { constexpr 测试 t{3}; } 这被拒绝: $ g++ c.cpp -std=c++20 ...
我有一个来自外部图书馆的课程。同一范围内只能存在一个实例。我可以断言(instance_counter<=1) that no problem in a wrapper class. But I want to be sure at compile tim...
static_assert 在 Visual C++ 10 中不起作用
我的印象是 Visual C++ 10 有内置的 static_assert。但是当我编译以下内容时 无效测试() { static_assert( sizeof( char ) == 1, "" ); } 我明白了 错误 C3861:'static_a...
我喜欢提供有用的错误/消息,我也想为我的 static_asserts 这样做。问题是,它们依赖于模板参数。通常,这些参数会显示在 w...
尝试使用 static_assert 作为参数评估逗号运算符时,编译失败 无效 fvoid() {} int main() { int a = (1, 2); // a=2 int b = (fvoid(), 3); // b=3 int d = ( ...
对 constexpr 数组的每个元素进行 C++ constexpr 操作
是否可以迭代 constexpr C 数组/std::array/向量并对每个元素执行 constexpr 操作以及编译时要完成的所有操作? https://godbolt.org/z/5a4v3Eerh #
编译时检查 -fsingle- precision-constant
我从接受的答案中了解到 使 C 浮点文字浮点(而不是双精度)并且进行讨论, GCC 提供编译器标志 -fsingle- precision-constant 来强制浮点
gcc 意外的 C static_assert 错误:静态断言中的表达式不是常量
我有一些 C 代码,可以使用 gcc-11 及更早版本构建,但不能使用 gcc-12 及更高版本构建。 这说明了问题(这不是我正在处理的实际代码): #包括 #包括<
static_assert 与 C_ASSERT - 使用哪一个?
我有一个有关编译时断言的编码标准的一般 C++/Windows 问题。 static_assert 是 C++11 并支持语言/编译器; C_ASSERT 是 winnt.h 中的定义 所以,如果我...
问题 我刚刚发现我自己编写的动态断言取决于常量 usize::MAX。 我写: u128::try_from(letters.len()) .expect("不支持带有 `max 指针的平台
当编译器能够在编译时确定参数常量时触发(static_)断言
考虑以下代码: 现场演示 #包括 #包括 #包括 结构体我的文件 { MyFile(const char* 文件名, int 标志, mode_t 模式) { ...
使用 c++ 的 std(::ranges)::uninitialized_... 算法是否有性能优势,是否值得不使用 constexpr?
我正在实现一个容器类型,它拥有一些我使用 std::make_unique_for_overwrite() 创建的内存。鉴于此函数专门将 std::unique_ptr 返回给 uninitial...
为什么在模板函数中指向不完整类型的指针上的 static_assert 显然有效?
在用 require 语句替换模板化函数中的 static_assert 的过程中,我们发现,首先,该函数偶尔会被用在不完整的类型上,并且
为什么模板函数中不完整类型上的 static_assert 显然有效?
在用 require 语句替换模板化函数中的 static_assert 的过程中,我们发现,首先,该函数偶尔会被用在不完整的类型上,并且
当编译器能够在编译时确定参数常量时触发(static_)断言
考虑以下代码: 现场演示 #包括 #包括 #包括 结构体我的文件 { MyFile(const char* 文件名, int 标志, mode_t 模式) { ...
如何在类似函数的宏中实现(编译时)静态断言? 对于将静态断言作为“C”语句注入的情况,有很好的讨论和很多替代方案 -
我可以(在编译时)检测我是否处于 extern "C" {} 块中吗?
假设我有一个C头文件a.h 任何 C++ 头文件(例如 #includes a.h 的 a.hpp)都应该在 extern“C”块中执行此操作。 所以我有一些 C++ 代码和 C 代码之间通用的头文件
我有以下宏用于某些编译时检查: /* 表达式内编译时检查计算结果为 0 */ #ifdef __cplusplus 模板 结构 Chk_sa; 模板 <> 结构 Ch...
我编写了几个 constexpr 函数并在 static_asserts 中使用它们来控制一些资源限制。但我不仅想强制执行编译时谓词,还想查看实际值计算...
我想在编译时定义一些缓冲区并使用 static_assert 检查它们的大小: 结构缓冲区{ int* 数组; size_t 尺寸; }; 模板 结构体ConstAr...