Bug de compilação em C ++?
Eu tenho o seguinte código:
#include <iostream>
#include <complex>
using namespace std;
int main() {
complex<int> delta;
complex<int> mc[4] = {0};
for(int di = 0; di < 4; di++, delta = mc[di]) {
cout << di << endl;
}
return 0;
}
Espero que produza "0, 1, 2, 3" e pare, mas gera uma série interminável de "0, 1, 2, 3, 4, 5, ....."
Parece que a comparaçãodi<4
não funciona bem e sempre retorna verdadeiro.
Se eu apenas comentar,delta=mc[di]
, Recebo "0, 1, 2, 3" normalmente. Qual é o problema com a atribuição inocente?
estou usandoIdeone.com g ++ C ++ 14 com a opção -O2.