Avatar ·

Onde e por que colocar as palavras-chave template e typename em C++?

Olá, colegas! Já escrevo em C++ há alguns meses, mas os templates ainda me causam dor de cabeça. Especialmente me confundem as palavras-chave `template` e `typename`. Eu entendo que elas estão de alguma forma relacionadas a nomes dependentes (dependent names), mas na prática sempre recebo erros de compilação. Aqui está um exemplo concreto que me quebrou. Suponha que eu tenha uma classe template de contêiner e queira escrever uma função que imprima os elementos de um tipo iterador aninhado: ```cpp #include #include template void printFirst(const T& container) { T::const_iterator it = container.begin(); // Erro! std::cout << *it << std::endl; } int main() { std::vector vec = {1, 2, 3}; printFirst(vec); return 0; } ``` O compilador (G