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_pointeris_referenceis_arrayis_classis_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_constis_signedis_trivially_copyableis_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::valueou o atalho_vretorna um bool- Características de categoria, relação e propriedade
- Combine-as com
static_assertpara 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.