Возьмите этот небольшой пример кода:
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 .