ho usato typeid
per ottenere i nomi dei tipi di std :: vector :: size_type e una classe di dimensioni pari a zero A con il seguente codice (cppreference):uscita Strano di std :: :: typeid nome()
#include<iostream>
#include <vector>
#include <typeinfo>
using namespace std;
class A {};
int main()
{
vector<int> v(10);
vector<int>::size_type s = v.size();
A a;
cout << typeid(s).name() << endl;
cout << typeid(a).name() << endl;
};
e ho avuto questo come output:
m
1A
Credo che "1" prima "a" è il risultato del vuoto ottimizzazione classe base, ma che cosa significa "m" è l'acronimo ed è normale?
Sto usando la seguente versione di gcc: g ++ (Ubuntu 4.4.3-4ubuntu5.1) 4.4.3
I nomi restituiti da 'type_info :: name' sono definiti dall'implementazione. Gcc ha scelto 'm' per' size_type'. Mi batte :) – jrok
@jrok ah, potente allora. :) – tmaric
Si potrebbe voler controllare un riferimento sulla funzione ['std :: type_info :: name'] (http://en.cppreference.com/w/cpp/types/type_info/name). –