Compilando Templates C++
Neste artigo você verá um pouco sobre como Templates C++ funcionam e sobre técnicas de como compilá-los num ambiente modularizado.
Entendendo melhor o problema
Primeiro, antes de resolver este impasse, vale a pena conferir como os templates em C++ funcionam. Com eles você pode escrever um código genérico ao se abstrair do tipo de variável do qual estamos tratando. Por exemplo:
Com este código, criamos uma função capaz de retornar a soma de 2 números. Mas então, você pode se perguntar: "Como o compilador vai saber a qual tipo de variável estamos nos referindo? Afinal, o código precisa ser compilado. E o compilador precisa saber o espaço que precisará alocar, caso a função seja chamada, e armazenar essa informação no binário gerado pela compilação."
É verdade, o compilador precisa dessa informação. E ele o obtém na hora da aplicação da função, ou seja, na hora em que chamarmos a função. Dessa forma, ao encontrar o código:
o compilador irá saber de que se trata de um:
e irá gerar o código necessário para tal função. E, se no mesmo código, tiver mais um:
o compilador irá gerar um código para double's também (da mesma forma que o anterior).
Com este código, criamos uma função capaz de retornar a soma de 2 números. Mas então, você pode se perguntar: "Como o compilador vai saber a qual tipo de variável estamos nos referindo? Afinal, o código precisa ser compilado. E o compilador precisa saber o espaço que precisará alocar, caso a função seja chamada, e armazenar essa informação no binário gerado pela compilação."
É verdade, o compilador precisa dessa informação. E ele o obtém na hora da aplicação da função, ou seja, na hora em que chamarmos a função. Dessa forma, ao encontrar o código:
o compilador irá saber de que se trata de um:
e irá gerar o código necessário para tal função. E, se no mesmo código, tiver mais um:
o compilador irá gerar um código para double's também (da mesma forma que o anterior).