I would guess it's no different than other inferred attributes. I would also guess that it only gets promoted to a return parameter if it's actually returned.
If we can't have properly typed parameters, it feels like it has potential to prevent some patterns.
This prevents automatic scope promotion: template escape(T) { int[] escape1(scope int[] r) { return r; } alias escape=escape1; }