Removed use of 'perfect forwarding' because it interfered with proper type induction
No longer accept reference types since type deduction with reference types and value types leads to ambiguity and unexpected behavior.