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

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



ссылка на сообщение  Отправлено: 28.07.12 19:50. Заголовок: MS VC++ 2010: баг при поиске имен в лямбда-выражении


Казалось бы, что уже трудно найти новый баг компилятора MS VC++ 2010, относящийся к лямбда-выражениям, после уже обнаруженых мною ранее нескольких багов. Однако это не так, и список багов для лямбда-выражений компилятора MS VC++ 2010 придется пополнить еще одним багом.

На этот раз компилятор MS VC++ 2010 неправильно осуществляет поиск имен при определнии лямбда-выражения внутри класса.

Вот пример программы, демонстрирующий этот изъян.

#include "stdafx.h" 

void f( int ) {}

struct
{
void f() {}
void g()
{
[=] { f(); } ();
}
} a;

int _tmain(int argc, _TCHAR* argv[])
{
return 0;
}


При компиляции этого кода компилятор MS VC++ 2010 выдает следующее сообщение об ошибке:


 цитата:
error C2660: f: функция не принимает 0 аргументов



То есть при поиске имени f в лямбда-выражении компилятор не замечает это имя, объявленное внутри неименованного класса (это не имеет значения, именован класс или нет), а начинает поиск имени f за пределами класса. Так как он находит в глобальном пространстве имен функцию f, принимающую один параметр, а в лямбда-выражении функция с таким именем вызывается без аргументов, то компилятор и сообщает об ощибке.

При компиляции этого кода компилятором GCC 4.7.0 никакой ошибки не возникает.

Порадую Майкрософт новым сообщением о баге их компилятора!

Спасибо: 0 
ПрофильЦитата Ответить
Ответов - 1 [только новые]





ссылка на сообщение  Отправлено: 28.07.12 19:51. Заголовок: Пришел ответ от Майк..


Пришел ответ от Майкрософт, в котором они уверяют, что в следующем релизе их компилятора (как я полагаю, это будет релиз 11) этот баг будет исправлен.


 цитата:
Posted by Microsoft on 11.04.2012 at 10:43

Hi:
A fix for this issue has been checked into the compiler sources. The fix should show up in the next release of Visual C++.

Xiang Fan
Visual C++ Team



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

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