I don't think this is a druntime bug. The compiler sets __argTypes differently for structs with cpctors vs. structs without:
```
static if (is(T U == __argTypes))
pragma(msg, T, " = ", U);
```
Prints:
CopyConstructor = ()
NoCopyConstructor = (int)
Comment #2 by dlang-bot — 2020-04-26T22:44:44Z
@ibuclaw created dlang/dmd pull request #11065 "fix Issue 20771, 20772, disallow passing non-trivially copyable types as variadic arguments" fixing this issue:
- fix Issue 20772 - va_arg doesn't work for structs with copy constructors
https://github.com/dlang/dmd/pull/11065
Comment #3 by dlang-bot — 2020-04-27T03:28:00Z
dlang/dmd pull request #11065 "fix Issue 20771, 20772, 20775 disallow passing non-trivially copyable types as variadic arguments" was merged into master:
- e8d157d3f9c9531c0812b6325ba2244abe6bc946 by Iain Buclaw:
fix Issue 20772 - va_arg doesn't work for structs with copy constructors
https://github.com/dlang/dmd/pull/11065