Leia templates e código genérico
Entenda como os templates permitem que funções e contêineres trabalhem com muitos tipos.
- Reconhecer templates de função, a dedução de tipos e os requisitos de tempo de compilação.
Os templates descrevem código parametrizado por tipos ou por valores. O compilador instancia um template para os tipos usados por um programa. Os templates de função podem deduzir os parâmetros de template a partir dos argumentos, enquanto templates de classe como std::vector<T> recebem um parâmetro de tipo. Os templates são verificados quando instanciados, então os diagnósticos podem ser longos; leia o primeiro erro relevante perto do código que usa o template.
1#include <iostream>
2
3template <typename T>
4T larger(T left, T right) {
5 return left < right ? right : left;
6}
7
8int main() {
9 std::cout << larger(4, 9) << "\n";
10}9
Aqui, os dois argumentos deduzem T como int. Uma chamada como larger(4, 9.5) pode falhar na dedução, porque os argumentos sugerem tipos diferentes; converta de propósito ou projete um template que aceite tipos distintos quando isso fizer sentido.
Principais conclusões
Os templates são compilados para os tipos usados pelo programa.
A dedução de tipos pode reduzir a repetição, preservando as verificações estáticas.
Diagnostique os erros de template a partir da primeira mensagem relevante e do ponto de instanciação.
Quiz da aula
5 perguntas · aprovação com 4 acertos · até 50 XP
Ao passar, você conclui a aula e mantém sua sequência. As perguntas erradas voltarão em sessões de revisão.
Pratique: escreva código em C++
Escreva C++20 no editor e execute com entradas de exemplo. O GCC 14 compila o código pelo Compiler Explorer, um serviço público gratuito; seu código-fonte e a entrada de teste são enviados para lá.
Escreva uma função genérica de maior valor
Complete o template de função para que ele devolva o maior de dois valores do mesmo tipo. Leia dois inteiros e imprima o resultado.
- O valor da direita é maior
- O valor da esquerda é maior
Seu código é compilado como C++20 com gcc 14 (-Wall -Wextra) e executado no Compiler Explorer (godbolt.org), um serviço público gratuito.
Dúvidas sobre esta lição
Travou em algum ponto? Pergunte. Descobriu algo? Compartilhe. Explicar também é uma ótima forma de aprender.
Carregando publicações…