btw, while this was an interesting topic to look into, i found a much better way to deal with the problem; namely, not to obfuscate function signatures

i was trying to contain heterogenous function signatures as abstract functors in containers.

the problem? references! since i wanted to contain a reference to an argument type, i had a combinatorial-growth of the number of partial specializations i had to code with respect to the number of arguments, or else i woudl receive a "can't define a &&" error.

the (imo clever) solution was to create an intermediate template variable class with implicit conversion between it and it's template parameter type. then all i ahd to do was specialize that for T and T&