回答編集履歴

1

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

2020/09/05 14:35

投稿

SaitoAtsushi
SaitoAtsushi

スコア5684

test CHANGED
@@ -29,3 +29,47 @@
29
29
  };
30
30
 
31
31
  ```
32
+
33
+
34
+
35
+ 特殊化するのであれば `friend` 宣言は `A<T*>` の方にすればよいですね。
36
+
37
+
38
+
39
+ ```
40
+
41
+ #include <type_traits>
42
+
43
+
44
+
45
+ template<typename T>
46
+
47
+ class A{
48
+
49
+ T a;
50
+
51
+ public:
52
+
53
+ A(T a):a{a}{}
54
+
55
+ void f(A<T*> p){a=*p.a;}
56
+
57
+ };
58
+
59
+
60
+
61
+ template<typename T>
62
+
63
+ class A<T*> {
64
+
65
+ friend class A<T>;
66
+
67
+ T* a;
68
+
69
+ public:
70
+
71
+ A(T* a):a{a}{}
72
+
73
+ };
74
+
75
+ ```