回答編集履歴
3
悲しい typo
test
CHANGED
@@ -16,7 +16,7 @@
|
|
16
16
|
|
17
17
|
この記法を使って修正したコードが次です。
|
18
18
|
|
19
|
-
なお、 `if constexpr`
|
19
|
+
なお、 `if constexpr` 文は `tail` の数が 0 でないときはそもそも `Turing<tail...>` を展開しないようにするために利用しています。これにより `template <int head = 0, ...>` のような無意味なデフォルト引数が必要なくなります。 (無意味でなかったならごめんなさい) 。
|
20
20
|
|
21
21
|
|
22
22
|
|
2
的を得てない参考を削除
test
CHANGED
@@ -17,10 +17,6 @@
|
|
17
17
|
この記法を使って修正したコードが次です。
|
18
18
|
|
19
19
|
なお、 `if constexpr` 式は `tail` の数が 0 でないときはそもそも `Turing<tail...>` を展開しないようにするために利用しています。これにより `template <int head = 0, ...>` のような無意味なデフォルト引数が必要なくなります。 (無意味でなかったならごめんなさい) 。
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
`template` キーワードのこの使い方については [依存名に対するtypenameとtemplateの制限緩和 - cpprefjp C++日本語リファレンス](https://cpprefjp.github.io/lang/cpp11/dependent_name_specifier_outside_of_templates.html) で知りました。もっと直接的にこれに触れているサイトもあると思いますが、参考までに。
|
24
20
|
|
25
21
|
|
26
22
|
|
1
少し丁寧に
test
CHANGED
@@ -1,14 +1,26 @@
|
|
1
|
-
`expected expression` の直接的な原因は、テンプレート引数
|
1
|
+
`expected expression` の直接的な原因は、メンバ関数呼び出しの部分のテンプレート引数が正しくテンプレート引数として扱われていないことにあります。こういう場合、メンバ関数テンプレート名の前に `template` をつける必要があります。
|
2
2
|
|
3
3
|
|
4
4
|
|
5
|
-
|
5
|
+
```cpp
|
6
6
|
|
7
|
-
|
7
|
+
map_double().template cons<head*2>();
|
8
|
+
|
9
|
+
```
|
8
10
|
|
9
11
|
|
10
12
|
|
11
|
-
|
13
|
+
どうパースされているのかまでは私には分からないのですが、不等号か何かかと思っているのでしょうね?
|
14
|
+
|
15
|
+
|
16
|
+
|
17
|
+
この記法を使って修正したコードが次です。
|
18
|
+
|
19
|
+
なお、 `if constexpr` 式は `tail` の数が 0 でないときはそもそも `Turing<tail...>` を展開しないようにするために利用しています。これにより `template <int head = 0, ...>` のような無意味なデフォルト引数が必要なくなります。 (無意味でなかったならごめんなさい) 。
|
20
|
+
|
21
|
+
|
22
|
+
|
23
|
+
`template` キーワードのこの使い方については [依存名に対するtypenameとtemplateの制限緩和 - cpprefjp C++日本語リファレンス](https://cpprefjp.github.io/lang/cpp11/dependent_name_specifier_outside_of_templates.html) で知りました。もっと直接的にこれに触れているサイトもあると思いますが、参考までに。
|
12
24
|
|
13
25
|
|
14
26
|
|
@@ -76,6 +88,4 @@
|
|
76
88
|
|
77
89
|
}
|
78
90
|
|
79
|
-
|
80
|
-
|
81
91
|
```
|