Why typeid is different ? | Sololearn: Learn to code for FREE!
Nouvelle formation ! Tous les codeurs devraient apprendre l'IA générative !
Essayez une leçon gratuite
+ 1

Why typeid is different ?

Refer code below : Why I am getting different type id name for both the cout statements ? https://code.sololearn.com/cmnFNAvgMM8E/?ref=app

8th May 2022, 8:21 AM
Ketan Lalcheta
Ketan Lalcheta - avatar
7 Réponses
+ 1
Can't explain, but triggering a call to the parametric constructor yields similar outputs. (Edited)
8th May 2022, 12:59 PM
Ipang
+ 1
Nice catch Ipang I got idea about triggering a parametric constructor ..just passed parameter and I could observe the same output Could you please elaborate on addition of default constructor ?
8th May 2022, 1:09 PM
Ketan Lalcheta
Ketan Lalcheta - avatar
+ 1
Ketan Apologies, my previous comment on default constructor was a mistake (comment removed). I see now addition of default constructor didn't have any effect. Perhaps I forgot to remove an argument I used on instantion at line 20 on earlier test, and got wrong impression the similar outputs was due to addition of default constructor. My bad 😁
8th May 2022, 1:18 PM
Ipang
+ 1
No problem... It's ok... Just wanted to check that I am not missing something
8th May 2022, 3:16 PM
Ketan Lalcheta
Ketan Lalcheta - avatar
+ 1
Just got this behaviour as well Let default constructor i.e. no argument provided into function as it is Changed call from main function and remove argument value passed to make it same as what we have inside template function... With both function calls having same thing, typeid is still different
8th May 2022, 3:19 PM
Ketan Lalcheta
Ketan Lalcheta - avatar
+ 1
Ketan, It's also funny that having the code as it is, and just use of uniform initializer on instantiation at line 20 yields similar outputs ... cout << typeid(tempClass{}).name() << endl; I wonder, whether tempClass() was misunderstood for a function declaration (confused)?
8th May 2022, 3:30 PM
Ipang
+ 1
True... I also thought about function declaration at first like below Class obj; means class constructor is called Class obj(); means obj is function just declared which don't take argument and return type is of class type Class obj(); is fine as it is called declaration and never called so no linker error But is this case for our current scenario ? This declaration line (if we assume that it is declaration) is a function parameter so it can't be a declaration ... This is what I feel to discard it as function declaration but not sure and totally confused
8th May 2022, 3:47 PM
Ketan Lalcheta
Ketan Lalcheta - avatar