小编Jon*_*nas的帖子

静态constexpr模板数组成员本身递归所需

我想要一个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)

templates constexpr c++11

7
推荐指数
1
解决办法
223
查看次数

标签 统计

c++11 ×1

constexpr ×1

templates ×1