O que é um template ? A programação genérica no C++ se dá em grande parte através de templates . Eles parecem mágicos, pois diferente de um objeto, ele não verifica assinaturas. https://gist.github.com/thiagomg/679eefc59beb8cf03d3b Como saber se "C" tem o método sum, sem ter uma interface ? Isso é validado em tempo de compilação, pois diferente de linguagens como Java, a função declarada com template existe somente quando é instanciada. Vamos ver isso com exemplos e código rodando !