On-line: гостей 0. Всего: 0 [подробнее..]
Программисты всех стран, объединяйтесь!

АвторСообщение



ссылка на сообщение  Отправлено: 28.07.12 15:27. Заголовок: MS VC++ 2010: баг при поиске уточненного имени (elaborated name)


А вот еще один на мой взгляд баг MS VC++ 2010.

Рассмотрим код

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;
}


MS VC++ 2010 не компилирует этот код, сообщая об ошибке в определении функции f: "Error: использование неопределенного типа N1::N2::Outer. См. объявление N1::N2::Outer"

То есть получается, что когда функция f определяется, то компилятор не видет определение типа Outer в виду того, что объявление функции было сделано ранее определения класса Outer.

Borland C++ Builder 5.0 компилирует этот код без проблем. Интересно, а как другие компиляторы относятся к \тому коду?

Спасибо: 0 
ПрофильЦитата Ответить
Новых ответов нет


Ответ:
1 2 3 4 5 6 7 8 9
большой шрифт малый шрифт надстрочный подстрочный заголовок большой заголовок видео с youtube.com картинка из интернета картинка с компьютера ссылка файл с компьютера русская клавиатура транслитератор  цитата  кавычки моноширинный шрифт моноширинный шрифт горизонтальная линия отступ точка LI бегущая строка оффтопик свернутый текст

показывать это сообщение только модераторам
не делать ссылки активными
Имя, пароль:      зарегистрироваться    
Тему читают:
- участник сейчас на форуме
- участник вне форума
Все даты в формате GMT  3 час. Хитов сегодня: 13
Права: смайлы да, картинки да, шрифты да, голосования нет
аватары да, автозамена ссылок вкл, премодерация откл, правка нет