language-lawyer 相关问题

有关编程语言和环境的正式或权威规范的复杂性的问题。

为什么关键字 false 在 gcc C23 中不是整型常量表达式?

最新的 gcc 13.x (trunk) 给出了此代码的编译器错误 (gcc -std=c23): int* p = 假; 错误:使用类型“_Bool”初始化类型“int *”时出现不兼容的类型 这怎么可能是正确的呢? ...

回答 2 投票 0

友元函数声明可以用 msvc 编译但被 gcc 拒绝

我了解到一个类可以创建另一个类并且还可以充当它的朋友。然后我编写了以下程序,msvc 可以工作(编译),但 gcc 拒绝它。 结构体A{}; 结构B { 使用类型...

回答 1 投票 0

类可以坚不可摧(没有析构函数)吗?

考虑: #包括 模板 结构体A { ~A() 需要(std::is_void_v); //~A() 需要(!std::is_void_v) = default; }; 模板结构 A...

回答 1 投票 0

为什么 fgets() 接受(有符号)int 作为其“count”参数?

标准函数 fgets 在即将发布的 C23 标准中是这样指定的: 7.23.7.2 fgets 函数 概要 #包括 char *fgets(char * 限制 s, int n, FILE *

回答 1 投票 0

fgets函数规范不一致

标准函数 fgets 在即将发布的 C23 标准中是这样指定的: 7.23.7.2 fgets 函数 概要 #包括 char *fgets(char * 限制 s, int n, FILE *

回答 1 投票 0

为什么 C++ 编译器不跨函数调用转发常量负载?

考虑以下示例代码: 无效black_box(int* foo); int foo(int x) { 黑盒(&x); 返回x; } int bar(const int x) { black_box(const_cast(&x)); 重新...

回答 1 投票 0

CTAD 关于隐性扣除指南的规则

我希望 b{d{}} 中的 b 构造会导致编译错误,因为 b 的模板化构造函数由于其限制而不可行。然而,GCC和MSVC似乎接受这个代码...

回答 1 投票 0

编译器在使用参数相关查找和约束表达式的重载解析上存在分歧

在下面的程序中,模板函数 f 调用重载模板函数 p,其中一个重载是在 f 之后声明的,但据我了解,它必须在实例化点找到......

回答 2 投票 0

使用memcmp比较两个不相关的指针是UB吗?

对两个不相关的指针(即不指向同一个数组或对象的两个指针)进行算术比较是 C 中未定义的行为。 整数a,b; 布尔 ub = &a < &b;...

回答 1 投票 0

根据定义对无限的 IO 操作列表进行排序是否会导致永无止境的操作?或者有什么办法可以摆脱吗?

这实际上是我想通过我之前的问题来理解的东西,但我用词不当,理所当然地认为解决方案必须以某种方式建立在顺序和重复的基础上,所以我得到了一个

回答 1 投票 0

`operator new`是如何在链接器级别实现的?

根据 C++ 文档,运算符 new/etc。功能是: 在每个翻译单元中隐式声明[,并且]如果在

回答 1 投票 0

在与 getc 系列返回值进行比较之前,是否必须将字符转换为 unsigned char?

我不确定在与 getc 系列函数的返回值进行比较之前是否必须将字符转换为无符号字符。 这是没有演员表的示例: #包括 ...

回答 2 投票 0

std::thread/jthread 可以在不执行传递的函数的情况下退出吗?

加入 std::thread 或 std::jthread 太快(在操作系统中实际启动线程之前)是否有可能导致线程根本不执行?或者是否保证它会简单地...

回答 1 投票 0

GCC 与 Clang 中的显式成员函数模板专门化错误

当我注意到一种这样的情况(如下所示)在 clang 和 msvc 中编译得很好但在 gcc 中却不行时,我试图显式地专门化一个成员函数模板。这是验证链接...

回答 1 投票 0

结合C++23推导this和自动返回类型的转换运算符?

我最近注意到一个关于 C++23 推导此功能的奇怪问题。 假设我们有一个带有简单转换运算符的结构体 S: 结构体S{ 运算符 int() { 返回 42; } }; int i = S{}; ...

回答 1 投票 0

Rust FFI 边界未定义行为何时会发生恐慌?

rustnomicon 包含以下示例: #[no_mangle] extern“C”fnassert_nonzero(输入:u32){ 断言!(输入!= 0) } 如果使用参数 0 调用assert_nonzero,则运行...

回答 1 投票 0

什么时候应该调用虚基类的构造函数?

考虑以下示例: 结构爷爷{ 爷爷(int x) {} }; 结构爸爸:爷爷{ 爸爸(int y) : 爷爷(15) {} }; 结构儿子:爸爸{ 儿子(int z) : 爸爸(z) {} }; int main () {...

回答 1 投票 0

为什么这个模板函数重载解析依赖于声明顺序?

考虑以下代码: #包括 // void foo(int* t ) { std::cout << "variant int* t, non-template\n"; } template void f...

回答 1 投票 0

无符号类型的中间计算可以为负数吗?

关于下面代码的两个问题: 是否允许在无符号类型上中间值来“存储”负值?形式上,两种类型的操作数的类型都是无符号的,结果都是

回答 1 投票 0

memcpy 和潜在重叠的子对象

根据 [basic.types#2] memcpy 不适用于潜在重叠的子对象。 对于任何对象(除了潜在重叠的子对象) 简单可复制的类型 T,无论是...

回答 2 投票 0

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