'предупреждение C4709: оператор запятой в выражении индекса массива' - но нигде не видно запятой! - PullRequest
11 голосов
/ 16 мая 2011

Возьмите этот небольшой пример кода:

struct Test{
    operator int() const{
        return 0;
    }
};

Test test(){
    return Test();
}

int main(){
    int arr[10];
    arr[test()] = 5;
}

Компиляция в Visual Studio 2010 с /W4 создает указанное предупреждение .Интересно, что если я добавлю простой конструктор по умолчанию, предупреждение внезапно исчезнет.Кроме того, это работает только в этом созвездии.Если я удалю вызов функции или не верну определенный пользователем тип, предупреждение исчезнет.Кроме того, как и ожидалось, GCC не выдает такого предупреждения.

Итак, могу ли я воспринимать это предупреждение с приведенным выше кодом как ошибку в Visual Studio или в этом есть что-то большее, чем кажется?Хотя было бы очень удивительно, если не сказать больше.


Редактировать : Создан отчет об ошибке в Microsoft Connect .

1 Ответ

5 голосов
/ 16 мая 2011

Определенно, это ошибка, вводящая в заблуждение предупреждение.

...