On Tuesday, 11 June 2024 at 16:41:46 UTC, confuzzled wrote:
Comparison between a Variant and an array is straightforward.
How does one accomplish the same between a SumType and an array?
Okay, this is what I came up with. Just a sanity check please.
Did I do this correctly? Is there something I'm overlooking?
```d
import std.variant;
import std.sumtype;
import std.traits: isArray;
struct S
{
SumType!(double[]) data;
bool opEquals(T)(auto ref const T s) const
if (isArray!T)
{
return data == typeof(data)(s);
}
void opAssign(T)(T value)
if (isArray!T)
{
data = typeof(data)(value);
}
this(T)(T value)
if (isArray!T)
{
opAssign(value);
}
}
void main()
{
Variant v = [1.7, 2.7, 3.7, 4.7, 5.7];
assert(v == [1.7, 2.7, 3.7, 4.7, 5.7]);
S s = [1.7, 2.7, 3.7, 4.7, 5.7];
assert(s == [1.7, 2.7, 3.7, 4.7, 5.7]);
}
```
Thanks,
--confuzzled