I typeid
verwendet, um die Typnamen des std :: vector :: size_type und eine Null-Size-Klasse A mit dem folgenden Code (cppreference) zu erhalten:merkwürdige Ausgabe von std :: typeid :: name()
#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;
};
und ich habe dies als Ausgabe:
m
1A
ich denke, dass „1“ vor dem „A“ ist ein Ergebnis der leeren Basisklasse-Optimierung, aber was bedeutet „m“ steht und ist das normal?
ich folgende gcc Version bin mit: g ++ (Ubuntu 4.4.3-4ubuntu5.1) 4.4.3
Die von 'type_info :: name' zurückgegebenen Namen sind Implementierungen definiert. Gcc wählte 'm' für' size_type'. Beats me :) – jrok
@jrok ah, dann gut. :) – tmaric
Sie könnten einen Verweis auf die Funktion ['std :: type_info :: name'] (http://en.cppreference.com/w/cpp/types/type_info/name) überprüfen. –