我使用typeid
来获取std :: vector :: size_type的类型名称和一个零大小的类A,其代码如下(cppreference):
#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;
};
我得到了这个输出:
m
1A
我想那是&#34; 1&#34;之前&#34; A&#34;是空基类优化的结果,但是&#34; m&#34;代表,这是正常的吗?
我使用的是以下gcc版本:g ++(Ubuntu 4.4.3-4ubuntu5.1)4.4.3
答案 0 :(得分:12)
G ++使用实现定义的类型命名,但它也提供了实用程序c++filt
,使它们具有人类可读性:
$ ./test | c++filt -t
unsigned long
A