MMMHUHU
基于@Xeo的出色创意,这是一种让您填写一系列constexpr std::array<T, N> a = { fun(0), fun(1), ..., fun(N-1) };在哪里T是任何文字类型(不只是int或其他有效的非类型模板参数类型),而且还是double,或std::complex(从C ++ 14开始)fun()任何constexpr功能在哪里std::make_integer_sequence从C ++ 14开始支持该功能,但今天可以轻松地用g ++和Clang来实现(请参见答案末尾的实时示例)我在GitHub上使用@JonathanWakely的实现(Boost许可)这是代码template<class Function, std::size_t... Indices>constexpr auto make_array_helper(Function f, std::index_sequence<Indices...>) -> std::array<typename std::result_of<Function(std::size_t)>::type, sizeof...(Indices)> { return {{ f(Indices)... }};}template<int N, class Function>constexpr auto make_array(Function f)-> std::array<typename std::result_of<Function(std::size_t)>::type, N> { return make_array_helper(f, std::make_index_sequence<N>{}); }constexpr double fun(double x) { return x * x; }int main() { constexpr auto N = 10; constexpr auto a = make_array<N>(fun); std::copy(std::begin(a), std::end(a), std::ostream_iterator<double>(std::cout, ", ")); }