templates are so powerful

they are a pain in C++ though