Consider the following code with one variable default constructed and the other one value constructed:
#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;
}
With GCC 4.8 the output is
A
A ()
A
So a,c
and b
have different types although they refer to the same struct/class. How can this be?
(Of course, this is a minimal example derived from an issue of a complex code. There, I get something like A
vs. A(int)
but I can't reproduce this yet.)