回答編集履歴
2
微修正
answer
CHANGED
@@ -7,4 +7,4 @@
|
|
7
7
|
この時の`i`は`initializer_list<pair < F, S >>::iterator`型です。
|
8
8
|
|
9
9
|
autoではなくきちんと型を記述するなら、`for (typename std::initializer_list<std::pair < F, S >>::iterator i = input.begin(); i != input.end(); ++i) {}`と書きます。
|
10
|
-
テンプレート引数に依存しているため、`std::initializer_list<std::pair < F, S >>::iterator`が型なのかメンバ変数なのかコンパイラは判断できません。デフォルトではメンバ変数扱いするので、
|
10
|
+
テンプレート引数に依存しているため、`std::initializer_list<std::pair < F, S >>::iterator`が型なのかメンバ変数なのかコンパイラは判断できません。デフォルトでは(確か)メンバ変数扱いするので、型であることをコンパイラに教えるためにtypenameを記述します。
|
1
補足
answer
CHANGED
@@ -4,4 +4,7 @@
|
|
4
4
|
`for (auto i : input) {}` のように使います。この時の`i`は`pair<F,S>`型です。
|
5
5
|
|
6
6
|
イテレータなら `for (auto i=input.begin(); i!=input.end(); ++i) { }`のように使います。
|
7
|
-
この時の`i`は`initializer_list<pair < F, S >>::iterator`型です。
|
7
|
+
この時の`i`は`initializer_list<pair < F, S >>::iterator`型です。
|
8
|
+
|
9
|
+
autoではなくきちんと型を記述するなら、`for (typename std::initializer_list<std::pair < F, S >>::iterator i = input.begin(); i != input.end(); ++i) {}`と書きます。
|
10
|
+
テンプレート引数に依存しているため、`std::initializer_list<std::pair < F, S >>::iterator`が型なのかメンバ変数なのかコンパイラは判断できません。デフォルトではメンバ変数扱いするので、そうでないことをコンパイラに教えるためにtypenameを記述します。
|