25.10.2013 02:08, Adam D. Ruppe пишет:
On Thursday, 24 October 2013 at 17:59:03 UTC, Alexandr Druzhinin wrote:
foo(cast(float[]) points); // is it safe?
Two options would be to make the points itself be a float[] with the
names just properties into the index:
struct Point {
float[7] data;
ref float x() { return data[0]; }
ref float y() { return data[1]; }
// etc etc etc
}
then to use it, just pass point.data[] instead of casting.
Or you could also do a union:
struct Point {
union {
float[7] data;
struct {
float x,y,z,r,g,b,a;
}
}
}
and again, pass point.data[] instead of casting it, while continuing to
use the other members normally.
These are both well defined so are less likely to break than the cast.
I thought to use union, but using struct with properties is good to
know. Thanks for sharing!