急需: values()
至少在ideone :: C ++ 14中编译以下代码:
#include <iostream>
template<int N>
struct Table
{
constexpr Table() : values()
{
for (auto i = 0; i < N; ++i)
{
values[i] = i * i * i;
}
}
int values[N];
};
int main() {
constexpr auto a = Table<1000>();
for (auto x : a.values)
std::cout << x << '\n';
}
但为什么?我曾经考虑过“值也可以以非constexpr的方式初始化,而values()确实明确表示我们以与constexpr兼容的方式对其进行了初始化”。但是,省略不: values()
那么清楚吗?
考虑一下语义。
从初始化列表中省略该成员将执行默认初始化,在这种情况下,该初始化将使数组具有未指定的值。那否定了目的constexpr
。
初始化数组的值对每个数组元素执行零初始化(因为这是内置类型的数组)。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句