template class Matrix { public: T data[16]; // .. etc } template matrix_mult(T **a, T **b, T **r) { // do math // return = r }