我曾经使用typeid以下代码(cppreference)获取std :: vector :: size_type的类型名称和零大小的类A.
#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;
};
Run Code Online (Sandbox Code Playgroud)
我把它作为输出:
m
1A
Run Code Online (Sandbox Code Playgroud)
我猜"A"之前的"1"是空基类优化的结果,但"m"代表什么,这是正常的吗?
我使用以下gcc版本:g ++(Ubuntu 4.4.3-4ubuntu5.1)4.4.3
Cub*_*bbi 12
G ++为类型使用实现定义的命名,但它也提供了c++filt使它们可读的实用程序:
$ ./test | c++filt -t
unsigned long
A
Run Code Online (Sandbox Code Playgroud)