在回答这个question about enums时,我阅读了有关基础尺寸的规范,并且说(关于无范围的枚举)[7.5.5]:
如果未修复基础类型,则每个枚举数的类型都是类型 其初始化值
但是当我尝试following code时,我得到sizeof int
所有枚举(在g ++,VC和clang上测试过)。
#include <iostream>
using namespace std;
enum e1 { e1a };
enum class ec1 { ec1a };
enum e2 { e2a = 'a' }; // I expect this to have sizeof 1
enum class ec2 { ec2a = 'a' };
int main() {
cout << "plain enum:" << sizeof(e1a) << endl;
cout << "enum class:" << sizeof(ec1::ec1a) << endl;
cout << "char initialized plain enum:" << sizeof(e2a) << endl;
cout << "char initialized enum class:" << sizeof(ec2::ec2a) << endl;
}
输出:
普通词:4
枚举类:4
char初始化简单枚举:4
char初始化枚举类:4
我误解了什么?
答案 0 :(得分:3)
在enum-specifier的右括号之后,每个枚举器都有其枚举类型。
证明:
<div class="covered"></div>
<div class="covering"></div>
输出:
.covered{
width: 200px; height: 200px;
background: red;
position: relative;
}
.covered:hover{
background-color: green;
}
.covering{
width: 200px; height: 200px;
background: blue;
position: relative;
top: -100px;
}
.covered:before{
content: "";
display: block;
position: absolute;
z-index: 300;
width: 100%; height: 100%;
}