1
4
这基本上是为了允许实现者向标准函数添加默认模板参数和默认参数以及所有其他东西,这将使它们的函数指针和引用的类型与标准所说的接口不一致。此外,实现可以改变那些本身不太隐藏的部分,您不应该依赖它们。因此全面禁止(例外情况)
可寻址函数
请注意,尽管这个显式规则在C++20中是新的,但在这之前就已经允许实现者修改函数的“标准”表示形式。也就是说,即使以前的C++版本没有这个子句,也有代码 不会是可移植的,因为不同的实现可能不会编译它。
现在,即使有这样的津贴,我也不认为GCC已经脱离困境。首先,上面的代码无法用GCC编译
due to a bug
.好的,很好,很简单(虽然冗长)的修复方法:提升
我将把不可靠的错误消息标记为“GCC的实现细节正在泄漏”,否则错误中的表达式就没有多大意义。也许GCC在函数指针旁边保留了一些额外的标志或其他东西(我知道,例如指向
TL;DR:你的代码是坏的,但GCC可能甚至是坏的 更多 |
2
0
[res.on.exception]/5 [conv.fctptr]/1
|
notamaster · 匿名命名空间中的变量声明和其他位置的定义 2 年前 |
sovesti · 参数较少的模板函数中的演绎 2 年前 |
Lingxi · 使用内联静态数据成员有任何潜在的陷阱吗? 6 年前 |
Quuxplusone · 销毁不可销毁的基类? 6 年前 |