Рассмотрим следующий код с созданием одной переменной по умолчанию и созданием другого значения:
#include <iostream>
#include <typeinfo>
struct A
{
A() : m_() {}
A(int m) : m_(m) {}
int m_;
};
int main()
{
A a, b(), c(5);
std::cout << typeid(a).name() << std::endl;
std::cout << typeid(b).name() << std::endl;
std::cout << typeid(c).name() << std::endl;
return 0;
}
При GCC 4.8 на выходе получается
A
A ()
A
Так что a,c
и b
имеют разные типы, хотя они ссылаются на одну и ту же структуру / класс.Как это может быть?
(Конечно, это минимальный пример, полученный из-за сложного кода. Там я получаю что-то вроде A
против A(int)
, но не могу воспроизвести этоеще.)