首页 > 解决方案 > 如何将 const 数组存储在可执行文件中?

问题描述

我想存储一个计算出的 const 数组,这样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++arraysconstantsconstexpr

解决方案


不使用宏是否可以做到这一点?

那么委托构造函数呢?

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];
};

推荐阅读