related to C++ templates