1
1
我相信 the accepted answer to the referenced question 回答关于ABI兼容性的大多数问题。我可以在这里重复一遍,但在那里我看不到什么价值。 针对C++ 11域范围枚举的特定问题,请举例说明:
是格式错误的,因为它需要收缩转换,因此需要实现提供诊断,但如果实现仅使其发出警告,则它可能会编译。正如您所要求的,编译器不会悄悄地改变底层类型的大小。 我们可以从C++标准草案中看出这一点。 dcl.enump5 :
和 转换常量表达式 禁止变窄,从 expr.constp5 :
|
2
0
这里是OP。 我发现了,我认为这是相关的,提到C++ 11有这么好。 std::underlying_type . 我想它可以和 is_same 和 static assertions ,以防止ABI因枚举而发生意外更改。 我认为(但我没有尝试)如果使用某个库,并且预先存在的枚举没有指定底层类型,那么这就特别相关。 |
apetrai · 我应该如何假设算法使用哪种迭代器类别? 2 年前 |
ridiculous_fish · std::是否保证短路? 2 年前 |
Fabio · 在c中将指针赋给常数指针++ 2 年前 |
johnco3 · 初始化固定C数组成员结构 6 年前 |
mans · 为什么出现此错误:constexpr在此处无效 6 年前 |
juztcode · 在C++中尝试捕获-创建了多少个对象 6 年前 |
Steven Scott · 忽略元素的基于范围的for循环 6 年前 |