C++ · Avançado · Inglês · Técnico
type traits
Biblioteca <type_traits> de templates que consultam ou transformam propriedades de tipos em tempo de compilação, como is_integral, is_same e remove_reference. Cada trait oferece ::value ou ::type.
Onde usar
Base de código genérico, if constexpr e concepts. Os sufixos _v e _t, do C++17 e do C++14, evitam escrever ::value e typename ::type.
Em código
static_assert(std::is_integral_v<int>);
static_assert(!std::is_integral_v<double>);
static_assert(std::is_same_v<
std::remove_reference_t<int&>, int>);
using T = std::decay_t<const int&>; // intExemplos
Check it with is same v instead of comparing by hand.
Verifique com is_same_v em vez de comparar na mão.
remove reference gives the type without the ampersand.
remove_reference dá o tipo sem o e comercial.
Cuidado
Traits só inspecionam tipos em tempo de compilação; não dizem nada sobre valores em tempo de execução.
Sinônimos
traços de tipo