Форум » C/C++ » MS VC++ 2010: баг при поиске уточненного имени (elaborated name) » Ответить

MS VC++ 2010: баг при поиске уточненного имени (elaborated name)

Сыроежка: А вот еще один на мой взгляд баг MS VC++ 2010. Рассмотрим код [pre2]namespace N1 { struct Outer; namespace N2 { struct Outer; void f( Outer * ); } struct Outer { int a; }; namespace N2 { struct Outer { int a[2]; }; } } void N1::N2::f( Outer *p ) { std::cout << "sizeof( *p ) = " << sizeof( *p ) << std::endl; }[/pre2] MS VC++ 2010 не компилирует этот код, сообщая об ошибке в определении функции f: "Error: использование неопределенного типа N1::N2::Outer. См. объявление N1::N2::Outer" То есть получается, что когда функция f определяется, то компилятор не видет определение типа Outer в виду того, что объявление функции было сделано ранее определения класса Outer. Borland C++ Builder 5.0 компилирует этот код без проблем. Интересно, а как другие компиляторы относятся к \тому коду?

Ответов - 0



полная версия страницы