编译或执行打破语言规则的程序的不可预测的结果,编译器,解释器和运行时系统都不得强制执行。
假设我有以下两个类定义(只有 bar() 的访问说明符不同,其他所有内容都相同): 类我的类{ 民众: 无效 foo(); 无效栏(); // b...
这是代码 printf("%d", 0x80000000 / 10). 它打印相对于其绝对值的正确值,但忘记添加减号。让我们检查一下原始整数(有符号)是否...
如何获取任意两个对象之间的内存距离(以字节为单位)(如果此测量以有意义的方式存在)?
指针算术只是针对指向同一数组(或数组后面的元素)的元素的指针定义的行为。 是否有任何定义的行为来获取两个元素之间的内存距离...
我可以将可调用对象分配给具有不同返回类型的 std::function 吗?
我将函数存储在 std::function 中。调用这个存储函数时我不关心返回值,因此 std::function 只是返回 void。
例如,给出以下代码: 整数 f(整数 n) { 如果 (n < 0) return 0; n = n + 100; if (n < 0) return 0; return n; } Assuming you pass in a number that i...
我可以将 lambda 分配给具有不同返回类型的 std::function 吗?
我有一种情况,我有两个不同的函数签名,它们的返回类型不同。 调用函数时,返回类型被忽略,因此它是 void 返回类型。 有没有未定义的地方
我有一种情况,我有两个不同的函数签名,其返回类型不同。 调用函数时忽略返回类型,因此它是 void 返回类型。 有吗
使用const_cast<>时未定义的行为在哪里? [重复]
如果我这样做: const char* const_str = "某个字符串"; char* str = const_cast(const_str); // (1) str[0] = "P"; // (2) 未定义的行为到底在哪里(哪一行)? 我去过海...
函数参数的计算和函数的返回值分配给另一个对象之间是否存在序列点?
函数参数的计算和函数的返回值分配给另一个对象之间是否存在序列点? 换句话说,这是明确定义的行为吗? INT...
是否调用非常量内存。乐趣。通过 const_cast 获得的非 const ref 在 const 对象上,仅当 fun 实际修改对象时才调用 UB?
简而言之,我问以下代码是否仅在 /* body */ 确实更改了 i 的值时才调用 UB,或者如果没有,则通过调用非常量 MaybeChange 成员函数来调用 UB ...
假设我们可以访问对齐为 8 且区域大小为 8 的倍数的连续内存区域。 现在,假设我想使用该区域的特定部分,但我...
C++ 标准的第 §3.9.1/6 节说: bool 类型的值为 true 或 false。 现在考虑这段代码, 无效 f(布尔 b) { switch(b) //因为 b 是 bool,所以它的值可以是...
有符号 int 上溢-下溢会导致未定义的行为,但编译器如何预测这种情况?
有符号 int 算术运算可能会溢出和下溢,当发生这种情况时,根据 C++ 标准(和 C 标准),这是未定义的行为。届时该计划预计...
当目标类型无法保存结果值时,@intCast() 会导致未定义的行为。是否有类似 @safeIntCast() 或类似的函数会返回 CastError!anytype?
是否是未定义行为(UB): 0 << 32 0LL << 64 ? I would appreciate it if the answer includes references to the C standard.
在 C++20 中模拟 std::start_lifetime_as_array
根据cppreference,目前没有编译器支持std::start_lifetime_as_array。 然而,SO 答案表明它可以在 C++20 中“模拟”,如下所示: 模板
给出以下包装(简化): 模板 类包装器 { 公共:自动 val() { 返回 t; } 私人:T t; }; 我正在尝试获取一系列包装纸来
我正在使用嵌套的稀疏指针数组,并希望概括每个级别的指针的分配和初始化。 我决定使用 for 循环来迭代每个级别,但是......
是否将“指向结构体的指针的地址”转换为“第一个成员是指向结构体的指针的结构体的地址”UB?
我有一个名为 Node 的结构,其第一个成员是 Node* p_next 我有一个指向第一个节点的指针,名为 p_head 我想将 Node** 类型的 &p_head 转换为 Node*,并将其存储在