【发布时间】:2012-08-13 04:08:00
【问题描述】:
我希望 C 类有一个 C 类型的静态 constexpr 成员。这在 C++11 中可能吗?
尝试 1:
struct Foo {
constexpr Foo() {}
static constexpr Foo f = Foo();
};
constexpr Foo Foo::f;
g++ 4.7.0 说:“不完整类型的无效使用”指的是 Foo() 调用。
尝试 2:
struct Foo {
constexpr Foo() {}
static constexpr Foo f;
};
constexpr Foo Foo::f = Foo();
现在的问题是在类定义中缺少 constexpr 成员 f 的初始化程序。
尝试 3:
struct Foo {
constexpr Foo() {}
static const Foo f;
};
constexpr Foo Foo::f = Foo();
现在 g++ 抱怨 Foo::f 的重新声明与 constexpr 不同。
【问题讨论】: