Add TMP directives for type inequalities in C++.
Hack fix for forwarding constructor.

This patch fixes a weird bug where the record constructors perform
so-called 'too-perfect-forwarding'. The solution implemented should work
for pretty much every imaginable case, although edge cases aren't out of
the realm of possibility.