我希望C类有一个类型为C的静态constexpr成员.这在C++ 11中是否可行?
尝试1:
struct Foo {
constexpr Foo() {}
static constexpr Foo f = Foo();
};
constexpr Foo Foo::f;
Run Code Online (Sandbox Code Playgroud)
g ++ 4.7.0说:'无效使用不完整类型'指的是Foo()调用.
尝试2:
struct Foo {
constexpr Foo() {}
static constexpr Foo f;
};
constexpr Foo Foo::f = Foo();
Run Code Online (Sandbox Code Playgroud)
现在的问题是在类定义中缺少constexpr成员的初始化器f.
尝试3:
struct Foo {
constexpr Foo() {}
static const Foo f;
};
constexpr Foo Foo::f = Foo();
Run Code Online (Sandbox Code Playgroud)
现在g ++抱怨重新声明Foo::f不同的内容constexpr.
我正在尝试编译此代码,但g ++抱怨ZERO有一个不完整的类型.这是否意味着在C++中结构不能包含static constexpr自身的实例?如果是这样,为什么?
struct Cursor
{
size_t row,column;
static constexpr Cursor ZERO {0,0};
//error: constexpr const Cursor Cursor::ZERO has incomplete type
};
Run Code Online (Sandbox Code Playgroud)
编辑:我明白,Cursor当我申报时,不能有完整的类型ZERO.我想知道的是:我有什么方法可以ZERO归属Cursor并且仍在存在constexpr吗?