我想要一个static constexpr模板化类中的类元素数组,类似于以下代码:
struct Element {
unsigned i;
constexpr Element (unsigned i) : i(i) { }
};
template <bool Reverse>
struct Template {
static constexpr Element element[] = {
Element (Reverse ? 1 : 0),
Element (Reverse ? 0 : 1),
};
};
int main (int argc, char **argv) {
return Template<true>::element[0].i;
}
Run Code Online (Sandbox Code Playgroud)
当然,实际Element结构比这个例子更复杂,但它已经显示出问题.如果我编译这个机智gcc我得到一个关于递归依赖的错误:
test.cc: In instantiation of ‘constexpr Element Template<true>::element [2]’:
test.cc:11:27: recursively required from ‘constexpr Element Template<true>::element [2]’
test.cc:11:27: required from ‘constexpr Element …Run Code Online (Sandbox Code Playgroud)