Still learning c++ generics: they can't be split into .h/.cpp