这些成员变量之间有什么区别:
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<ul>
<li class="menuItem">
<a href="www.google.com">
Home
</a>
</li>
<li class="menuItem">
<a href="www.google.com">
About
</a>
</li>
<li class="menuItem">
<a href="www.google.com">
News
</a>
</li>
<li class="menuItem">
<a href="www.google.com">
Gallery
</a>
</li>
<li class="menuItem">
<a href="www.google.com">
Media
</a>
</li>
<li class="menuItem">
<a href="www.google.com">
Contact
</a>
</li>
</ul>
如果我的理解是正确的,我可以使用struct my_class {
static const int i = 0;
static constexpr int j = 0;
};
和i
作为编译时常量。也就是说,j
和std::array<int, my_class::i>
都应该有用。
答案 0 :(得分:8)
积分或枚举类型的成员没有区别(如您的示例所示)。对于所有其他类型,常量表达式require constexpr
:
左值 - 右值转换(4.1),除非它适用于
- 一个非整数或枚举类型的非易失性glvalue,它引用一个完整的非易失性const对象 初始化,用常量表达式初始化,或[...]
- 一个非易失性glvalue,它引用一个用
constexpr
定义的非易失性对象,或者引用这种非易失性对象的非易失性对象。 一个对象,或[...]