I think that all of non template functions must not be written out multiple times in object files, even if it is auto return function.
To explain my approach, I opened #3050. I'm still not sure that it can fix the original closure variable + bogus code generation issue, but at least multiple definition error is properly fixed (because the error can reproduce on win32 platform).