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

回答編集履歴

1

特殊化する場合の例を追加

2020/09/05 14:35

投稿

齊藤敦志
齊藤敦志

スコア5779

answer CHANGED
@@ -13,4 +13,26 @@
13
13
  A(T a):a{a}{}
14
14
  void f(A<T*> p){a=*p.a;}
15
15
  };
16
+ ```
17
+
18
+ 特殊化するのであれば `friend` 宣言は `A<T*>` の方にすればよいですね。
19
+
20
+ ```
21
+ #include <type_traits>
22
+
23
+ template<typename T>
24
+ class A{
25
+ T a;
26
+ public:
27
+ A(T a):a{a}{}
28
+ void f(A<T*> p){a=*p.a;}
29
+ };
30
+
31
+ template<typename T>
32
+ class A<T*> {
33
+ friend class A<T>;
34
+ T* a;
35
+ public:
36
+ A(T* a):a{a}{}
37
+ };
16
38
  ```