【问题标题】:How to initialize an array in a template class with a custom value?如何使用自定义值初始化模板类中的数组?
【发布时间】:2016-06-09 23:11:37
【问题描述】:

例如

template<size_t N>
class A
{
    array<int, N> m;
    static A const UNIT {1, 1, ...}; // repeated N times, 
                                     // but I can't because of currently unspecified N
}

如何使用自定义值1 初始化模板大小的数组?

【问题讨论】:

  • 不确定,但如果我看到... 与模板结合使用,我开始考虑使用可变参数模板参数列表并解包。不知道如何生成这些,使用非类型模板参数给出它们的编号。
  • fill 做了一些工作。但我不知道怎么表达。可能是 lambda???
  • 啊,好吧。是的,确实如此。我假设您正在寻找编译时解决方案。

标签: c++ arrays initialization


【解决方案1】:

您可以使用填充功能。 这也适用于静态 const 成员。

template<size_t N>
class A {
    array<int, N> m;
    public:
    static A const unit;
    A() { m.fill(1); }
};

template<size_t N>
A<N> const A<N>::unit{};

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-03-28
    • 1970-01-01
    • 2019-11-28
    • 2012-04-11
    • 1970-01-01
    • 1970-01-01
    • 2013-06-25
    • 1970-01-01
    相关资源
    最近更新 更多