Автор | Сообщение |
|
Отправлено: 28.07.12 16:59. Заголовок: Еще раз о пространстве имен и возможном баге в MS VC++ 2010.
Обнаружил такой простой баг в MS VC++ 2010. Есть код #include <iostream> namespace A { int i = 5; } int main() { using namespace A; std::cout << "::i = " << ::i << std::endl; } Компилятор MS VC++ 2010 выдает сообщение об ошибке, что имя ::i не находит. Если же директиву using вынести из функции main, то переменная ::i находится. #include <iostream> namespace A { int i = 5; } using namespace A; int main() { std::cout << "::i = " << ::i << std::endl; } Что-то я нигде в стандарте С++ не усмотрел, что первый вариант не должен компилироваться и отличается от последнего варианта при поиске имен, квалифицированных оператором ::.
|
 |

|
Ответов - 2
[только новые]
|
|
|
Отправлено: 28.07.12 17:01. Заголовок: Я вот далек от С, но..
Я вот далек от С, но интересно: MS VC++ глючный компилятор?
|
 |
|
|
Отправлено: 28.07.12 17:02. Заголовок: PSP пишет: Я вот да..
PSP пишет: цитата: | Я вот далек от С, но интересно: MS VC++ глючный компилятор? |
| Чем больше я с ним работаю, тем больше глюков нахожу. Но дело в том, что вышло исправление к этому компилятору SP1, которое я еще не установил. Возможно, что часть ошибок там уже исправили. Но в целом впечатление такое, тчо этот компилятор повторяет путь компилятора Borland C++ Builder. Там также главным нареканием со стороны пользователей была его несовместимость со стнадартом. Из-за этого часть пользователей вынуждены были переходить на компляторы других фирм. В итоге Borland C++ Builder как продукт именно Borland перестал существовать в виду того, что не приносил прибыль, и Borland его перепродала. Из-за этого популярность Borland Builder резко упала. Я думаю, что Microsoft поступил просто не совсем чистоплотно.. Им главное было - это сбыть продукт в установленные сроки, а уж потом серьезно за него браться. То есть задача была срубить деньги в соответсвии с заранее составленным планом. А план у них такой, что каждлые два года выпускать новую версию своего компиляторпа. Был MS VC++ 2008, теперь MS VC++ 2010, наверное на подходе MS BC++ 2012.
|
 |

|
|