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;
}
