c++ - 使用模板编译时计算使用 const 值初始化数组

标签 c++ arrays templates initialization

我想写这样的东西:

template <typename type,int p,int q = 1> struct const4array
    {
    static const type value [] = { type(p)/type(q) , type(p)/type(q) , type(p)/type(q) , type(1) } ;
    };

double xx [] = { 0.5 , 0.5 , 0.5 , 1 } ;
double yy [] = const4array<double,1,2>::value ; // I would like to have : xx == yy

我认为这段代码对于人类开发人员来说很容易理解,但对于编译器来说显然不是(它会返回很多错误)。

是否可以做我想做的事,如果可以,如何正确地做? (我发现许多其他问题看起来像这个问题,但与我的问题不够接近)。

提前致谢!

最佳答案

普通 C 风格数组只能使用 {} 语法进行初始化,它们不能从其他数组复制初始化。但是,您可以使用对象模拟或包装数组(如 std::array ),因为它们可以被复制并用于初始化。

关于c++ - 使用模板编译时计算使用 const 值初始化数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56922213/

相关文章:

javascript - 如何使用 .map() 将 promise 的结果分配给数组元素?

c - 使用 C 中的 YAJL 树检测 JSON 文件中的数组时出现问题

c++ - 实现嵌套在模板类中的类的成员函数

c++ - 从函数类型中剥离所有限定符

c++ - 为什么 stringstream::str() 会截断字符串?

C++ 指向 vector 的指针

c++ - c vector 可以存储多种数据类型吗?

javascript - primeReact Props 和下拉选项问题

c++ - 嵌套模板和模板推断错误

c++ - 双向链表父指针改变