Considere o seguinte trecho de código:
int x = 10;
std::cout << "Is Integral = " << std::is_integral_v<decltype(x)> << std::endl;
int & y = x;
std::cout << "Is Integral = " << std::is_integral_v<decltype(y)> << std::endl;
Aqui x
é considerado um tipo integral, mas y
não é.
Alguma explicação de por que isso acontece?
A definição de tipo integral da
std::is_integral
documentação :x
O tipo de éint
- um dos tipos mencionados acima.Mas
y
o tipo de éint&
( uma referência a int), nãoint
. Não é um dos tipos para os quaisstd::is_integral
retornatrue
.Se você quiser verificar se o tipo ao qual a referência está se referindo é intergal, você pode usar
std::remove_reference_t
para "retirar" a referência do tipo:Saída:
– canção yuanyao