> But then you're back to square one
Obviously, you'd do:
Size size;
size.width = 10;
size.height = 20;
Instead of Size(10, 20).
Another alternative is to give each element their own struct...
struct Width { int width; alias width this; }
foo(Width(10), Height(20));