C++ 使用模板编译时间计算使用常量值初始化数组

C++ 使用模板编译时间计算使用常量值初始化数组,c++,arrays,templates,initialization,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 [] = co

我试着写这样的东西:

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样式数组只能使用{}语法初始化,不能从其他数组复制初始化。但是,您可以使用模拟或包装数组的对象,就像可以复制并用于初始化的对象一样。

我认为,它被破坏的原因与双zz[]=xx;也不管用。