Я использовал 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
Я предполагаю, что «1» перед «A» является результатом оптимизации пустого базового класса, но что означает «m» и нормально ли это?
Я использую следующую версию gcc: g++ (Ubuntu 4.4.3-4ubuntu5.1) 4.4.3
type_info::name
, определяются реализацией. Gcc выбралm
вместоsize_type
. Бьет меня :) - person jrok   schedule 06.05.2013std::type_info::name
. - person Some programmer dude   schedule 06.05.2013A
. - person Mike Seymour   schedule 06.05.2013