https://issues.dlang.org/show_bug.cgi?id=19904
--- Comment #2 from [email protected] --- This is what I mean: import core.stdc.stdio; struct S { this(this) { printf("postblit\n"); } ~this() { printf("dtor\n"); } } void foo(S s) { printf("rvalue\n"); } void foo(ref S s) { printf("lvalue\n"); } void forward(Args...)(auto ref Args args) { foo(args); } void main() { printf("directly:\n"); foo(S()); printf("forward:\n"); forward(S()); } => directly: rvalue dtor forward: lvalue dtor The rvalue-ness is lost when forwarding `auto ref` params this way (but still detectible via isRef trait). --
