perché typeid restituisce che int e const int sono gli stessi tipi
Domanda
if(typeid(int) == typeid(const int))
cout << "Same types"<< endl;
RISULTATO DEL PROGRAMMA:
Stessi tipi
mi sto perdendo qualcosa? questi non sono gli stessi tipi lol.
Soluzione
Non sono dello stesso tipo, ma l'operatore typeid
elimina const
e volatile
.
Dalla sezione 5.2.8 [expr.typeid]
:
I qualificatori cv di primo livello dell'espressione glvalue o id-tipo che è l'operando di
typeid
vengono sempre ignorati.
Altri suggerimenti
Probabilmente preferisci questo:
#include <type_traits>
if (std::is_same<int, const int>::value)
std::cout << "same types\n";
else
std::cout << "different types\n";
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow