Avatar ·

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

Olá, colegas! Escrevo em C++ há cerca de um ano, mas os templates ainda me causam dor de cabeça. Especialmente me confundem as palavras-chave `template` e `typename` no contexto de nomes dependentes (dependent names). Eu entendo que elas são necessárias para que o compilador possa interpretar o código, mas quando exatamente colocá-las é um mistério para mim. Aqui está um exemplo específico que me confunde. Suponha que eu tenha uma classe template de contêiner e queira escrever uma função que receba um iterador desse contêiner e acesse o tipo aninhado `value_type`: ```cpp #include template void processContainer(const Container& c) { typename Container::const_iterator it = c.begin(); // ... fazemos algo com o iterador } ``` Aqui eu tenho que escrever `typename` antes de `Container`...