digitalmars.D.learn - CTFE - filling an array
- The Anh Tran (31/31) Dec 09 2008 Hi,
- Christopher Wright (4/6) Dec 09 2008 The initializer of tmp must be a compile-time constant, but since dd is
Hi, I would like to pre-create a double array, each element is calculated by a function. //----------------------------------------------------- import std.stdio; import std.conv; import std.string; template f(int N) { bool fn(double[] tb) { for (int i = 1; i < N; i++) tb[i] = 1.0/i; return true; } } void main(string[] args) { const int N = 200; static double[N] dd = void; static auto tmp = f!(N).fn(dd); int n = toInt(args[1]); writefln("test array[%d] = %f", n, dd[n]); } //------------------------------------------------------ dmd.2021 says: cannot evaluate "static auto tmp = f!(N).fn(dd);" at compile-time. How can i fix it? Thanks.
Dec 09 2008
The Anh Tran wrote:static double[N] dd = void;dd is not a compile-time constant.static auto tmp = f!(N).fn(dd);The initializer of tmp must be a compile-time constant, but since dd is not a compile-time constant, you can't use CTFE on fn.
Dec 09 2008