C++ Virtual Template Function