【问题标题】:initialize an array using const values using a template compilation-time computation使用模板编译时计算使用 const 值初始化数组
【发布时间】:2019-07-07 12:36:57
【问题描述】:

我正在尝试写这样的东西:

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

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

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

提前致谢!

【问题讨论】:

  • 我认为,这与double zz[] = xx; 不能正常工作的原因相同。 I tried on godbolt

标签: c++ arrays templates initialization


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 2012-11-17
    • 2018-04-07
    • 2020-08-10
    • 2012-04-11
    • 1970-01-01
    • 1970-01-01
    • 2021-06-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多