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

时间:2019-07-07 12:36:57

标签: 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

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

是否有可能做我想做的事情,如果是的话,如何正确做? (我发现了许多其他问题,看起来像这个问题,但不够接近我的水平。)

谢谢!

1 个答案:

答案 0 :(得分:1)

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