【发布时间】:2014-05-01 17:46:40
【问题描述】:
是代码片段
struct Parameters {
static constexpr int n = 2;
static constexpr double v[n] = {4.0, 5.0};
};
合法的 C++11?如果是这样,Parameters::v[0] 和 Parameters::v[1] 是编译时常量还是只是指针 Parameters::v 本身是 constexpr(在编译时意味着什么)?
如您所见,我通常对constexpr 数组及其在类/结构中的初始化有点困惑。请随时回答我的具体问题,还可以提及有关此主题的常见陷阱等。
【问题讨论】:
-
注意
v不是指针,它是一个数组。 -
似乎完全合法:ideone.com/oMwXAj
-
@πάνταῥεῖ 很有趣,因为我的 clang (3.4) 不会在不提供 def 来配置数组的情况下进行链接(但整数常量没有问题)。多么奇怪。无论如何,它仍然编译,只是在链接上呕吐。