teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

3

悲しい typo

2018/04/30 03:45

投稿

Eki
Eki

スコア429

answer CHANGED
@@ -7,7 +7,7 @@
7
7
  どうパースされているのかまでは私には分からないのですが、不等号か何かかと思っているのでしょうね?
8
8
 
9
9
  この記法を使って修正したコードが次です。
10
- なお、 `if constexpr` は `tail` の数が 0 でないときはそもそも `Turing<tail...>` を展開しないようにするために利用しています。これにより `template <int head = 0, ...>` のような無意味なデフォルト引数が必要なくなります。 (無意味でなかったならごめんなさい) 。
10
+ なお、 `if constexpr` は `tail` の数が 0 でないときはそもそも `Turing<tail...>` を展開しないようにするために利用しています。これにより `template <int head = 0, ...>` のような無意味なデフォルト引数が必要なくなります。 (無意味でなかったならごめんなさい) 。
11
11
 
12
12
  ```cpp
13
13
  #include <iostream>

2

的を得てない参考を削除

2018/04/30 03:45

投稿

Eki
Eki

スコア429

answer CHANGED
@@ -9,8 +9,6 @@
9
9
  この記法を使って修正したコードが次です。
10
10
  なお、 `if constexpr` 式は `tail` の数が 0 でないときはそもそも `Turing<tail...>` を展開しないようにするために利用しています。これにより `template <int head = 0, ...>` のような無意味なデフォルト引数が必要なくなります。 (無意味でなかったならごめんなさい) 。
11
11
 
12
- `template` キーワードのこの使い方については [依存名に対するtypenameとtemplateの制限緩和 - cpprefjp C++日本語リファレンス](https://cpprefjp.github.io/lang/cpp11/dependent_name_specifier_outside_of_templates.html) で知りました。もっと直接的にこれに触れているサイトもあると思いますが、参考までに。
13
-
14
12
  ```cpp
15
13
  #include <iostream>
16
14
 

1

少し丁寧に

2018/04/30 03:15

投稿

Eki
Eki

スコア429

answer CHANGED
@@ -1,10 +1,16 @@
1
- `expected expression` の直接的な原因は、テンプレート引数のパスに失敗していことす。パースされてでは分からないのでが、不等号か何かかと勘違いしているのか?
1
+ `expected expression` の直接的な原因は、メンバ関数呼び出しの部分のテンプレート引数が正しくテンプレト引数として扱われてないことにあります。ういう場合、メンバ関数テンプレート名前に `template` をつける必要があります
2
2
 
3
+ ```cpp
3
- 次のように、呼び出そうとしているものがメンバ関数テンプレートであることを明示してあげると元コードでもうまく呼び出せます。
4
+ map_double().template cons<head*2>();
4
- なお、 if constexpr 式は tail の数が 0 でないときはそもそも Turing<tail...> を展開しないようにするために利用しています。これにより template <int head = 0, ...> のような無意味なデフォルト引数が必要なくなります。 (無意味でなければごめんなさい) 。
5
+ ```
5
6
 
6
- `template` キワードのこの使い方についは [依存名に対すtypenameとtemplate制限緩和 - cpprefjp C++日本語リファレンス](https://cpprefjp.github.io/lang/cpp11/dependent_name_specifier_outside_of_templates.html) も参考になりま
7
+ どうパスされるのかまでは私は分からいのでが、不等号か何かかと思っているのでしょうね?
7
8
 
9
+ この記法を使って修正したコードが次です。
10
+ なお、 `if constexpr` 式は `tail` の数が 0 でないときはそもそも `Turing<tail...>` を展開しないようにするために利用しています。これにより `template <int head = 0, ...>` のような無意味なデフォルト引数が必要なくなります。 (無意味でなかったならごめんなさい) 。
11
+
12
+ `template` キーワードのこの使い方については [依存名に対するtypenameとtemplateの制限緩和 - cpprefjp C++日本語リファレンス](https://cpprefjp.github.io/lang/cpp11/dependent_name_specifier_outside_of_templates.html) で知りました。もっと直接的にこれに触れているサイトもあると思いますが、参考までに。
13
+
8
14
  ```cpp
9
15
  #include <iostream>
10
16
 
@@ -37,5 +43,4 @@
37
43
  a.print();
38
44
  return 0;
39
45
  }
40
-
41
46
  ```