On 03/26/2018 12:16 PM, Aedt wrote:
I'm a big fan of betterC. In C, you can initialize an array without specifying the length like this
int ia[ ] = {0, 2, 1};

What is the translation of this?

The language doesn't have that feature. But there's a PR to add `staticArray` to the standard library [1]. When that gets in, you can write:

    import std.array;
    auto ia = [0, 2, 1].staticArray; /* ia is an int[3] */

[...]
Also, is it possible to retrieve the pointer of the sequence of actual data from std.container.array? If all fails I'd like to use this container.

Take the address of the first element:

    import std.container.array: Array;
    Array!int a = [1, 2, 3];
    int* p = &a[0];
    assert(*p == 1);
    assert(*++p == 2);
    assert(*++p == 3);

Be aware that the pointer potentially becomes invalid when you append to the array.


[1] https://github.com/dlang/phobos/pull/6178

Reply via email to