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?
```d
import std.traits: isStaticArray;
template Iota(size_t n)
{
import std.meta: AliasSeq;
static if (n == 0)
alias Iota = AliasSeq!();
else
alias Iota = AliasSeq!(Iota!(n - 1), n - 1);
}
template tupleOf(alias array)
if (isStaticArray!(typeof(array)))
{
import std.meta: Map = staticMap;
ref element(size_t i)()
{
return array[i];
}
alias tupleOf = Map!(element, Iota!(array.length));
}
```
Full example: https://run.dlang.io/is/COG7m4
Would definitely be nice to have this in the language, though.