Failure due to memcpy being called at compile time

Paul Backus snarwin at gmail.com
Mon Jun 13 21:45:39 UTC 2022


On Monday, 13 June 2022 at 19:48:06 UTC, JG wrote:
> Hi,
>
> I reduced my code to the following.  Could anyone help me to 
> discover why the line marked with //THIS LINE
>
> causes memcpy to be called, and how can I avoid this?

Reduced further:

```d
import std.sumtype;

struct Tuple
{
	void opAssign(Tuple rhs) {}
}

alias ParseErrorOr = SumType!Tuple;

auto parserOr() {
	ParseErrorOr cur;
	cur = ParseErrorOr(Tuple());
	return cur;
}

void main()
{
	enum a = parserOr();
}
```

The call to `move` is coming from `SumType.opAssign`:

https://github.com/dlang/phobos/blob/v2.100.0/std/sumtype.d#L681

I've filed a bugzilla issue for this here:

https://issues.dlang.org/show_bug.cgi?id=23182


More information about the Digitalmars-d-learn mailing list