Warum Beispiel folgende:typeid/type_info seltsame Verhalten
#include <iostream>
#include <typeinfo>
template<typename T>
void fun(const T& param)
{
std::cout << "T = " << typeid(T).name() << std::endl;
std::cout << "param = " << typeid(param).name() << std::endl;
std::cout << (typeid(T)==typeid(param)) << std::endl;
}
int main(int, char**)
{
fun(1);
}
gibt folgende Ausgabe:
T is i
param is i
1
Ich weiß, dass type_info::name()
Verhalten Implementierung abhängt. Wie auch immer, ich würde erwarten, operator==
false
(weil param
ist eine const Referenz und keine ganze Zahl) zurückgeben.
In y unser Code benutzt du '==' aber in deiner Frage '! ='. Klären. –
'typeid' ignoriert Qualifikationsmerkmale der obersten Ebene (einschließlich Referenzen). –
Sorry, behoben – user2449761