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.

È stato utile?

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
scroll top