#include using TEnglishString = std::string; class CComCommandInfo { public: CComCommandInfo( TEnglishString, TEnglishString ); }; template< typename T > class CGenericCommandEx { public: CGenericCommandEx( T ); }; template< typename T > void Test( TEnglishString commandName_, TEnglishString commandDescription_, T functor_ ) { CComCommandInfo cmdInfo( std::forward< TEnglishString >( commandName_ ), std::forward< TEnglishString >( commandDescription_ ) ); auto* pCommand = new CGenericCommandEx( std::forward< decltype( functor_ ) >( functor_ ) ); // <--- Note the extra spaces added here }