Является ли использование typeid для неопределенного поведения предварительно объявленного типа?

Правильно ли я читаю стандарт в 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'

10
задан Zac 4 July 2012 в 04:49
поделиться