simple c++ template recusive