我希望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
吗?