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