0Pricing
C++ Academy · Aula

Consulta de tipos

Inspecione tipos em tempo de compilação

Consulta de tipos é uma aula grátis de C++ Academy no CoddyKit. Esta é a aula 1 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de C++ Academy, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de C++ Academy inclui 4 aulas no total.

O que são Características de Tipos?

O cabeçalho <type_traits> permite fazer perguntas sobre tipos em tempo de compilação. Cada característica é um modelo que expõe uma constante ::value ou um tipo membro.

is_integral

std::is_integral<T>::value é verdadeiro para tipos inteiros, como int e char, e falso caso contrário.

#include <iostream>
#include <type_traits>

int main() {
    std::cout << std::is_integral<int>::value << "\n";
    std::cout << std::is_integral<double>::value << "\n";
    return 0;
}

O Atalho _v

O C++17 adicionou modelos de variáveis _v, para que você possa escrever std::is_integral_v<T> em vez de ::value.

#include <iostream>
#include <type_traits>

int main() {
    std::cout << std::is_integral_v<long> << "\n";
    std::cout << std::is_floating_point_v<float> << "\n";
    return 0;
}

Características de Categoria

Muitas características classificam tipos.

  • is_pointer
  • is_reference
  • is_array
  • is_class
  • is_enum
#include <iostream>
#include <type_traits>

struct S {};

int main() {
    std::cout << std::is_pointer_v<int*> << "\n";
    std::cout << std::is_class_v<S> << "\n";
    std::cout << std::is_reference_v<int&> << "\n";
    return 0;
}

Características de Relação

Algumas características comparam dois tipos.

  • is_same<A,B>
  • is_base_of<Base,Derived>
  • is_convertible<From,To>
#include <iostream>
#include <type_traits>

struct Base {};
struct Derived : Base {};

int main() {
    std::cout << std::is_same_v<int, int> << "\n";
    std::cout << std::is_base_of_v<Base, Derived> << "\n";
    return 0;
}

Características de Propriedade

As características de propriedade informam qualificadores e capacidades.

  • is_const
  • is_signed
  • is_trivially_copyable
  • is_default_constructible
#include <iostream>
#include <type_traits>

int main() {
    std::cout << std::is_const_v<const int> << "\n";
    std::cout << std::is_signed_v<unsigned> << "\n";
    return 0;
}

Usando Características em static_assert

As características combinam perfeitamente com static_assert para impor requisitos em tempo de compilação.

#include <type_traits>
#include <iostream>

template <typename T>
T add(T a, T b) {
    static_assert(std::is_arithmetic_v<T>, "T must be a number");
    return a + b;
}

int main() {
    std::cout << add(2, 3) << "\n";
    return 0;
}

Como as Características Funcionam

Uma característica é apenas um modelo de estrutura. O modelo geral herda de false_type; uma especialização para o tipo correspondente herda de true_type. O compilador escolhe a melhor correspondência.

integral_constant

Todas as características booleanas derivam de std::integral_constant. true_type e false_type são apenas aliases para ele, com value igual a verdadeiro ou falso.

#include <iostream>
#include <type_traits>

int main() {
    std::cout << std::true_type::value << "\n";
    std::cout << std::false_type::value << "\n";
    return 0;
}

Consultando Dentro de Modelos

As características permitem que os modelos escolham caminhos com base no tipo recebido, possibilitando um código genérico que se adapta de forma diferente a tipos int, float, ponteiro ou classe.

Somente em Tempo de Compilação

As consultas de características não têm custo em tempo de execução; elas são avaliadas durante a compilação. O resultado é incorporado ao código gerado.

Verificação Rápida

Relembre a sintaxe conveniente do C++17.

Recapitulação

Você aprendeu a consultar tipos.

  • <type_traits> responde a perguntas em tempo de compilação
  • ::value ou o atalho _v retorna um bool
  • Características de categoria, relação e propriedade
  • Combine-as com static_assert para impor restrições

Perguntas Frequentes

A aula “Consulta de tipos” é grátis?

Sim — o texto completo de “Consulta de tipos” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de C++ Academy, atualize para CoddyKit PRO. O curso de C++ Academy inclui 4 aulas no total.

O que vou aprender em “Consulta de tipos”?

Inspecione tipos em tempo de compilação Você pratica C++ Academy com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.

Preciso ter experiência prévia para começar C++ Academy?

Nenhuma experiência prévia é necessária. C++ Academy no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 1 de 4.

Quanto tempo leva a aula “Consulta de tipos”?

A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.

Posso escrever e executar código nesta aula de C++ Academy?

Sim. Cada aula de C++ Academy inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.

Todas as aulas deste curso

  1. Consulta de tipos
  2. Transformação de tipos
  3. Lógica condicional
  4. Escrita de traits personalizados
← Voltar para C++ Academy