language-lawyer 相关问题

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

构成成员指针类型的`::`和`*`可以来自不同的宏扩展,还是必须以单个标记的形式出现?

考虑以下代码: #定义FOO A:: 结构A { 整数x; }; int FOO *ptr = &A::x; Clang(18.1.0,无标志)发出警告: :8:5:警告:“::”和“*”标记形成点...

回答 1 投票 0

为什么可变 lambda 转换为函数指针而不是调用operator()?

从 cppinsights 我们看到下面的代码行 lambda(); 是如何实现的由语言解释: const auto lambda = [] () 可变 {}; 无效 foo() { 拉姆达(); } 人们会天真地认为,

回答 1 投票 0

在const lambda 对象上调用非常量operator()

考虑以下代码片段(演示): const auto lambda = [] () 可变 {}; 使用 Lambda = decltype(lambda); static_assert(!std::is_function_v); static_assert(std::is_class_v<

回答 1 投票 0

std::weak_ptr 什么时候为空?过期的 std::weak_ptr 是否为空?

根据 [util.smartptr.weak.obs]/4,weak_ptr::owner_before 严格的弱排序是这样的:“两个shared_ptr或weak_ptr实例是等价的,当且仅当它们共享所有权......

回答 1 投票 0

使用基数排序实现 std::sort 重载是否合法?

对于适用的数据类型,良好的基数排序可以大幅击败比较排序,但 std::sort 通常作为 introsort 实现。有没有理由不使用基数排序

回答 2 投票 0

这两种情况的初始化顺序有什么区别吗?

考虑这个例子: #包括 结构体A { A() { std::cout<<"hello" << std::endl; } }; inline A a; int main() { } This example causes the pro...

回答 1 投票 0

主函数的兼容类型

来自ISO/IEC 9899:2024, 5.1.2.3.2,程序启动: 程序启动时调用的函数名为 main。这 实现没有声明此函数的原型。应该是 用 ret 定义...

回答 1 投票 0

如何在标准 C++ 中强制执行特定的内存存储顺序?

这有点像语言律师问题。 在典型的嵌入式系统或设备驱动程序中,通常需要对 MMIO/PIO 寄存器进行非常特定的内存存储序列。作为一个例子...

回答 1 投票 0

C 有非补码实现吗?

众所周知,ISO C 标准(我认为还有 C++,尽管我对 C 方面更感兴趣)允许有符号数字的三种基本表示形式: 二进制补码; 的

回答 3 投票 0

列表与隐式初始化字段的直接聚合初始化

如果我们对比聚合的列表初始化和聚合的直接初始化,如果我没有为所有字段指定初始值设定项,那么我认为以下情况适用: 对于非工会

回答 1 投票 0

是否定义了非数组组成成员之间字节指针偏移量的计算?

我理解 expr.add#4.2 背后的推理,将 + 和 - 限制为针对同一数组元素的指针,这在我关于偏移点的问题的几条评论中进行了解释...

回答 1 投票 0

constexpr bool 是原子约束吗?

看这段代码(godbolt): 模板 constexpr bool c1 = TYPE::c1; 模板 constexpr bool c2 = TYPE::c2; 模板 需要 c1&l...

回答 1 投票 0

如何检查构造函数是否显式默认

例如: 结构体 X { X(){/***/} X(常量整数&){/***/} X(整数&&){/***/} X(const X& ) = 默认值; X( X&&) = 默认值; X& 运算符=(常量...

回答 1 投票 0

如果条件在输入时为真或稍后变为真,则状态转换

我正在MagicDraw中开发状态机模型。几乎所有的状态转换都是双倍的,因为这就是我在移交期间被告知要做的事情。 即,在两个状态之间我...

回答 1 投票 0

通过 std::bit_cast()ed 指针进行别名访问

违反严格别名规则会产生未定义的行为,例如当通过网络将结构发送到 char 缓冲区时,然后该 char 指针以 C 风格/reinterpret_cast 转换为结构

回答 1 投票 0

闭包类型什么时候终于变成结构类型了?

曾经有一个关于闭包类型是否应该被视为结构类型(本质上决定它们是否有资格作为 NTTP)的长时间讨论。一篇详细的帖子...

回答 1 投票 0

pthread_cond_signal 或 pthread_cond_broadcast 调用是否意味着写内存屏障?

条件变量通常用于在互斥锁下修改它们引用的状态。但是,当状态只是一个仅设置标志时,不需要互斥锁来阻止

回答 4 投票 0

C++协程中final_suspend的awaiter的实际规则是什么?

在 C++ 协程中,promise 类型的 Final_suspend 成员函数可以返回任意可等待类型,尽管通常是 std::suspend_always ,这会将责任留给其他人......

回答 1 投票 0

gcc -O3 诊断警告:'<U ea0>' 未初始化 - UB、bug 或“名称修改”?

在回答这个问题时,我萌生了一个想法,想绕过不将浮点数转换为指针的 C 约束,并想出了这段令人讨厌的异国情调的人工代码: (显然我们

回答 1 投票 0

为什么运算符和相应的成员函数之间有区别?

为什么 Clang 17.0.1 的操作符调用和相应的成员函数调用有区别?他们不应该有同样的行为吗? #包括 结构体A { 维...

回答 1 投票 0

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