xxxxxxxxxx
struct S
{
size_t a, b;
this(this) {} // no POD anymore
}
void foo(S param);
void bar()
{
// allocate a temporary on the caller's stack and move it to the callee
foo(S(1, 2));
S lvalue;
// copy lvalue to a temporary on the caller's stack (incl. postblit call)
// and then move that temporary to the callee
foo(lvalue);
import std.algorithm.mutation : move;
// move move()-rvalue-result to the callee
foo(move(lvalue));
}