SumType structure wrapping seems to fail (dmd v2.105.2)

Chris Piker chris at hoopjump.com
Sun Oct 1 03:42:12 UTC 2023


Hi D

As suggested in other threads I've tried wrapping a SumType in a 
structure to add functionality and used `alias ... this` to make 
assignment, etc. easier.  However the following code fails in dmd 
2.105.2.

```d
import std.sumtype;

struct Item{
   SumType!(void*, byte[3],  ubyte[3], string[3]) value;
   alias value this;
   this(T)(T thing){ value = thing;}
}

void main(){
   Item item;
   byte[3] byte_vec = [0x01, 0x02, 0x03];
   item.value = byte_vec;   // <-- works
   item = byte_vec;         // <-- fails to compile
}
```
Is there some important detail I'm missing?  The compiler error 
message is:
```
Error: generated function `test_sumtype3.Item.opAssign(Item p)` 
is not
        callable using argument types `(byte[3])`
        cannot pass argument `stuff` of type `byte[3]` to parameter
        `Item p`
```

Thanks for any suggestions,



More information about the Digitalmars-d-learn mailing list