Actually, the situation is likely to be more complicated than that.
My current understanding from reading the code is:
Somewhen, the feature of declaring "extern manual hooks" was added (ie. declaring a manual hook in one compilation unit and using it in another).
Until then, the macro RETURN_META_VALUE_MNEWPARAMS used to access something declared in SH_DECL_MANUALHOOK. This was not possible anymore, so a new function was added in SH_DECL_MANUALHOOK which did that part and RETURN_META_VALUE_MNEWPARAMS now only needs to call that function.
The side effect is that that function is now always compiled and not only when someone does RETURN_META_VALUE_MNEWPARAMS.
It turns out that what the function does ( = what RETURN_META_VALUE_MNEWPARAMS used to do there too ) is not compatible with reference return types.
This means that this functionality was already broken, but nobody has noticed, because nobody has used RETURN_META_VALUE_MNEWPARAMS with a manual hook which has a reference return type. Or nobody has reported it or I haven't read the report
And now with that 'exeternal manual hook declaration' feature the broken part is reported by the compiler as soon as you declare the hook.
I have a potential fix on my hard disk (only involves changes in sourcehook.h) but have to add some more test cases before I send it to (unsigned long) 0xBA1L so I guess it'll be finished in the next few days.
If you are actively using that hook and need to test it earlier please send me a PM.
Greetings,
PM
Edit: Actually, why so complicated, here is the new sourcehook.h in case you wish to try it out. Beware: only tried on windows so far!