Piszę sobie program (kolejny eksperyment ze Sztucznej Inteligencji). Mam kompilator g++ 9.3.1. Wszystko działa poprawnie. Zachciało mi się to skompilować pod g++ 4.9.2 (mam go na starym laptopie, z systemem Fedora Core 21). I okazało się, że to się nie kompiluje, chociaż powinno wspierać C++ 14 (a dodałem flagę -std=gnu++14). Minimalny case jest taki:
#include <vector>
#include <iostream>
int main()
{
std::vector<int> x={1,2,3};
for (auto y{x.begin()}; y!=x.end(); y++)
{
std::cout << *y << "\n";
}
return 0;
}
Natomiast jeśli zmienić linię 6 na:
for (auto y(x.begin()); y!=x.end(); y++)
... wówczas kompiluje się bez zarzutu. Jedyna różnica to te nawiasy klamrowe - powinny być okrągłe. Ale w nowych C++ podobno zaleca się klamrowe przy wywołaniu konstruktora.