![]() |
1
13
事实上,这比看起来更棘手。 只是为了明确重申要求:
在C++中,表达式可以是lvalues或prvalues(在C++11之前, 右值 对应于相关概念)。L值指的是对象,因此它们可以出现在 L 赋值表达式的左手边。对象存储和左值是我们想要避免的。 您需要的是标识符,或者 id表达式 ,计算为prvalue。
目前,只有枚举器可以做到这一点,但正如您所观察到的,它们会留下一些不需要的东西。每个枚举声明都引入了一个新的、不同的类型,因此
您可以使用
下一个最佳选项是函数调用:
不过要小心,因为
现在,不能将常量称为名称,它必须是
|
![]() |
2
3
我认为你应该考虑 C++11 feature of specifying an underlying type for an enum ,适用于您的示例的是:
这消除了您对使用enum的两个反对意见之一,即无法控制实际使用哪种类型来表示它们。但它仍然不允许非整数常量。 |
![]() |
3
0
你不会错的:
但老实说,尽量不要在意这一点。比如,真的试试看。 |
![]() |
Malvineous · 定义编译时间常数的最佳方法 10 年前 |
![]() |
Søren Debois · 执行类型单元表达式的习语iff条件为真 11 年前 |
![]() |
the wolf · 确保矩阵元素长度的“Python”方法 13 年前 |