On Tuesday, 10 August 2021 at 12:01:24 UTC, Dennis wrote:
```D
struct Vec {
    float x, y, z;
}

void setPosition(float x, float y, float z) {

}

void main() {
    Vec posS = Vec(10, 20, 30);
    setPosition(posS.tupleof); // pass

    float[3] posA = [10, 20, 30];
setPosition(posA.tupleof); // Error: no property `tupleof` for type `float[3]`
}
```

Does anyone know a library utility to make expanding a static array like this work?

I came up with

```d
auto structOf(T, size_t N)(T[N] xs) {
    string defstruct(size_t n) {
        import std.conv : to;

        string m = "struct S { " ~ T.stringof;
        foreach (i; 1 .. n) {
            m ~= " _";
            m ~= i.to!string;
            m ~= ",";
        }
        m ~= " _n; }";
        return m;
    }

    mixin(defstruct(N));
    return cast(S) xs;
}
```

for `structOf(posA).tupleof`

And I don't see very many static-array-generic functions in Phobos.

Reply via email to