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 '