Dans le code suivant :
#include <iostream>
#include <vector>
int main()
{
std::cout<<"Hello World";
std::vector<std::vector<int>> v;
while(v.size() <= 2){
v.insert(v.begin(),{}); //1
std::cout << "!";
}
return 0;
}
La sortie devient de plus en plus agressive à chaque itération, car la v.size()
n'augmente jamais, malgré les insert
fonctionnement.
Cependant, lorsque le initializer_list
a un élément en lui, ou remplacé par un temporaire, le cycle s'exécute autant de fois que prévu.
...
v.insert(v.begin(),{0}); //1
...
...
v.insert(v.begin(),std::vector<int>()); //1
...
Pourquoi ? Ne devrait-il pas y avoir une erreur de compilation si la conversion implicite échoue ?