updated c++ template