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

回答編集履歴

2

関数名の変更

2020/05/07 20:40

投稿

ameagari_hare
ameagari_hare

スコア39

answer CHANGED
@@ -10,16 +10,16 @@
10
10
  template< typename T >
11
11
  struct User {
12
12
  typedef typename Traits< T >::int_type int_type;
13
- int_type f() { return int_type{}; }
13
+ int_type get() { return int_type{}; }
14
14
  };
15
15
 
16
16
  int main() {
17
17
  User< char > u_c;
18
- auto c = u_c.f(); //cはint
18
+ auto c = u_c.get(); //cはint
19
19
  User< int > u_i;
20
- auto i = u_i.f(); //iはint
20
+ auto i = u_i.get(); //iはint
21
21
  User< long long > u_ll;
22
- auto ll = u_ll.f(); //llはlong long
22
+ auto ll = u_ll.get(); //llはlong long
23
23
  }
24
24
  ```
25
25
  この場合、Tがcharであればint_type = int、それ以外ならint_type = Tと解釈できます。

1

文章構成の変更

2020/05/07 20:40

投稿

ameagari_hare
ameagari_hare

スコア39

answer CHANGED
@@ -1,5 +1,6 @@
1
1
  テンプレートが絡んでいるのであれば、
2
2
  int_typeは、コンパイル時の"型の変数"と捉えると良いかと思います。
3
+ 以下は、テンプレートの実引数Tに応じて型が変化する例です。
3
4
  ```C++
4
5
  template< typename T >
5
6
  struct Traits { typedef T int_type; };
@@ -21,7 +22,6 @@
21
22
  auto ll = u_ll.f(); //llはlong long
22
23
  }
23
24
  ```
24
- これはテンプレートの実引数Tに応じて型が変化する例です。
25
- Tがcharであればint_typeintであることが強制され、それ以外ならそのままTを使用します。
25
+ この場合、Tがcharであればint_type = int、それ以外ならint_type = Tと解釈できます。
26
26
 
27
27
  テンプレートが関係ない場合は見当違いの回答になりますので、スルーしてください。