Casting to union type?
cc via Digitalmars-d-learn
digitalmars-d-learn at puremagic.com
Mon Aug 25 19:33:23 PDT 2014
Is it possible to allow implicit casting from a base type to a
union type? For example, considering the following basic vector
union:
union vec2 {
struct {
float x = 0.0f;
float y = 0.0f;
}
float[2] v;
enum length = v.length;
ref auto opIndex(size_t idx) {
assert(idx >= 0 && idx < length, "Bounds error on index");
return v[idx];
}
auto opAssign(float[] f) {
assert(f.length == length, "Bounds error on assignment");
v[0..length] = f[0..length];
return this;
}
}
vec2 a = vec2(1.0, 2.0); // fine
vec2 b;
b = [3.0, 4.0]; //fine
vec2 c = [5.0, 6.0]; // cannot cast float[] to vec2
Overloading opCast() seems to be only for "outbound" casting, and
unions can't have this() constructors like structs. Is there any
way to accomplish this?
More information about the Digitalmars-d-learn
mailing list