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


Reply via email to