【C++】範囲for文の変数宣言autoは省略できた
たまたま出会った下記の範囲for文について、きちんとコンパイルされ動作されているのを見て、軽く調べたメモ。
std::vector<int> x{1,2,3}; for(i : x){ // iの変数宣言部に型指定が無い std::cout << i << std::endl; }
結論
昔はサポートされており、コンパイラのほうでよしなにしてくれた。
C++17より未サポートとなり、以降はコンパイル時に怒られる。
使わないほうが安全。
詳細
検索すると下記のstackoverflowのページが引っ掛かった。 stackoverflow.com どうやら、C++17より未サポートになったようだ。
gccのバージョンを変えながらwandboxで実際に動かしてみたがどうやらそのようだ。
gcc6からC++17をサポートしており、stackoverflowの内容とも一致している。 gcc.gnu.org