Se você não está usando templates com C++, você está perdendo toda a diversão. A linguagem C++, apesar de suportar orientação a objetos, diferentemente de Java, não te "obriga" a usá-la. Você poderá ter o melhor dos mundos, em termos dos paradigmas e idiomas. Um pouco de orientação a objetos aqui e programação genérica ali, tudo isto no mesmo código! Vamos fazer uma implementação do seguinte código: https://gist.github.com/thiagomg/9e977b4c088734a95769