I mean, even if this is not clear. For example, if int is 32432423423403095590353095309530953, then it will always be the same. Therefore, I can easily set a function to return the type in which this variable ...
The results you get already do this. Perhaps this will help explain how exactly the C ++ implementation that you use gets the lines you see.
g ++ implements typeid(...).name() so that it returns a "ABI malformed" type name. This is a special way of representing the types that are used in compiled object files and libraries. If you compile C ++ code into an assembly, you will see βcharactersβ that identify which functions or data the resulting assembly code is associated with. For example, take the function:
int foo(double a, char b) { return a + b; }
compile it into an assembly and you will see something like the following:
_Z3foodc: .LFB0: .cfi_startproc movsbl %dil, %edi cvtsi2sd %edi, %xmm1 addsd %xmm1, %xmm0 cvttsd2si %xmm0, %eax ret .cfi_endproc
The first line here is the "garbled" character, which is used to identify the int foo(double,char) function. It contains "Z3foo", which represents the name of the function, and then "d", which represents the type of the first argument, and "c", which represents the type of the second argument. This symbol is used to identify a function in a binary object file, in library indices, other compiled objects that want to link this function, etc.
You can also unmount characters using the C ++ comparison tool. This tool scans any text that you pass to it, looking for things that match the syntax algorithm, and converts them into something more than what these types are called in C ++ source code.
g ++ implements the Itanium C ++ ABI scheme. It is used by most unix platform compilers.
So, back to your code, guess how the type 'int' is represented in these characters.
The Itanium ABI indicates an additional function for dismantling. Here is an example of using it.