如何将const数组存储在可执行文件中?

问题描述 投票:0回答:1

我想存储计算出的常量数组,使得a[i] = i*i -3;

这里是我的想法,但不确定:

constexpr int fun(int x) {
  return x * x - 3;
}

template<int N>
struct A {
  constexpr A() : array() {
    for (auto i = 0; i != N; ++i) array[i] = fun(i); 
  }
  int array[N];
};

const A<4> array1{};
const int array2[] = {-3, -2, 1, 6};

我认为array1已初始化,没有像array2那样存储在可执行文件中。

是否可以在不使用宏的情况下执行此操作?

c++ arrays const constexpr
1个回答
0
投票

是否可以在不使用宏的情况下执行此操作?

委派构造函数呢?

template<int N>
struct A {

  template <int ... Is>
  constexpr A(std::integer_sequence<int, Is...>)
     : array{ fun(Is)... }
   { }

  constexpr A() : A{std::make_integer_sequence<int, N>{}}
   { }

  int array[N];
};
© www.soinside.com 2019 - 2024. All rights reserved.