static-assert 相关问题

在编译时验证的断言语句。 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 ...

回答 1 投票 0

编译时检查同一作用域中只有一个类的实例被实例化

我有一个来自外部图书馆的课程。同一范围内只能存在一个实例。我可以断言(instance_counter<=1) that no problem in a wrapper class. But I want to be sure at compile tim...

回答 1 投票 0

static_assert 在 Visual C++ 10 中不起作用

我的印象是 Visual C++ 10 有内置的 static_assert。但是当我编译以下内容时 无效测试() { static_assert( sizeof( char ) == 1, "" ); } 我明白了 错误 C3861:'static_a...

回答 2 投票 0

在 static_assert 输出中集成类型名称?

我喜欢提供有用的错误/消息,我也想为我的 static_asserts 这样做。问题是,它们依赖于模板参数。通常,这些参数会显示在 w...

回答 5 投票 0

逗号运算符与 static_assert()

尝试使用 static_assert 作为参数评估逗号运算符时,编译失败 无效 fvoid() {} int main() { int a = (1, 2); // a=2 int b = (fvoid(), 3); // b=3 int d = ( ...

回答 4 投票 0

对 constexpr 数组的每个元素进行 C++ constexpr 操作

是否可以迭代 constexpr C 数组/std::array/向量并对每个元素执行 constexpr 操作以及编译时要完成的所有操作? https://godbolt.org/z/5a4v3Eerh #

回答 1 投票 0

编译时检查 -fsingle- precision-constant

我从接受的答案中了解到 使 C 浮点文字浮点(而不是双精度)并且进行讨论, GCC 提供编译器标志 -fsingle- precision-constant 来强制浮点

回答 1 投票 0

gcc 意外的 C static_assert 错误:静态断言中的表达式不是常量

我有一些 C 代码,可以使用 gcc-11 及更早版本构建,但不能使用 gcc-12 及更高版本构建。 这说明了问题(这不是我正在处理的实际代码): #包括 #包括<

回答 1 投票 0

static_assert 与 C_ASSERT - 使用哪一个?

我有一个有关编译时断言的编码标准的一般 C++/Windows 问题。 static_assert 是 C++11 并支持语言/编译器; C_ASSERT 是 winnt.h 中的定义 所以,如果我...

回答 1 投票 0

如何断言 `usize` 的大小以放弃对不兼容平台的支持?

问题 我刚刚发现我自己编写的动态断言取决于常量 usize::MAX。 我写: u128::try_from(letters.len()) .expect("不支持带有 `max 指针的平台

回答 1 投票 0

当编译器能够在编译时确定参数常量时触发(static_)断言

考虑以下代码: 现场演示 #包括 #包括 #包括 结构体我的文件 { MyFile(const char* 文件名, int 标志, mode_t 模式) { ...

回答 2 投票 0

使用 c++ 的 std(::ranges)::uninitialized_... 算法是否有性能优势,是否值得不使用 constexpr?

我正在实现一个容器类型,它拥有一些我使用 std::make_unique_for_overwrite() 创建的内存。鉴于此函数专门将 std::unique_ptr 返回给 uninitial...

回答 1 投票 0

为什么在模板函数中指向不完整类型的指针上的 static_assert 显然有效?

在用 require 语句替换模板化函数中的 static_assert 的过程中,我们发现,首先,该函数偶尔会被用在不完整的类型上,并且

回答 1 投票 0

为什么模板函数中不完整类型上的 static_assert 显然有效?

在用 require 语句替换模板化函数中的 static_assert 的过程中,我们发现,首先,该函数偶尔会被用在不完整的类型上,并且

回答 1 投票 0

当编译器能够在编译时确定参数常量时触发(static_)断言

考虑以下代码: 现场演示 #包括 #包括 #包括 结构体我的文件 { MyFile(const char* 文件名, int 标志, mode_t 模式) { ...

回答 1 投票 0

C 类函数宏中的静态断言

如何在类似函数的宏中实现(编译时)静态断言? 对于将静态断言作为“C”语句注入的情况,有很好的讨论和很多替代方案 -

回答 1 投票 0

我可以(在编译时)检测我是否处于 extern "C" {} 块中吗?

假设我有一个C头文件a.h 任何 C++ 头文件(例如 #includes a.h 的 a.hpp)都应该在 extern“C”块中执行此操作。 所以我有一些 C++ 代码和 C 代码之间通用的头文件

回答 1 投票 0

旧版 G++ 的常量表达式的表达式编译时检查

我有以下宏用于某些编译时检查: /* 表达式内编译时检查计算结果为 0 */ #ifdef __cplusplus 模板 结构 Chk_sa; 模板 <> 结构 Ch...

回答 1 投票 0

如何在C++中打印编译时计算的结果?

我编写了几个 constexpr 函数并在 static_asserts 中使用它们来控制一些资源限制。但我不仅想强制执行编译时谓词,还想查看实际值计算...

回答 6 投票 0

constexpr:为什么我的表达式不是常量表达式?

我想在编译时定义一些缓冲区并使用 static_assert 检查它们的大小: 结构缓冲区{ int* 数组; size_t 尺寸; }; 模板 结构体ConstAr...

回答 1 投票 0

© www.soinside.com 2019 - 2024. All rights reserved.