Правильно ли я читаю стандарт в 5.2.8.3:... If the type of the
expression is a class type, the class shall be completely-defined.
Если тип не «полностью -определен», означает ли это, что следующая программа не определена?
foo.cpp:
struct foo
{
virtual void a(){}
};
struct bar : foo
{
virtual void a(){}
};
bar abar;
foo& get_some_foo()
{
return abar;
}
main.cpp:
#include <iostream>
#include <typeinfo>
struct foo;
foo& get_some_foo();
int main()
{
foo& a_ref_foo(get_some_foo());
std::cout << "a_ref_foo typeid name: " << typeid(a_ref_foo).name() << std::endl;
return 0;
}
Выходы MSVC10:`a _ref _foo typeid name :struct foo'