回答編集履歴

1

なぜ T[X][Y] だと正しく動くかを追記

2018/09/20 17:42

投稿

mitama_rs
mitama_rs

スコア165

test CHANGED
@@ -55,3 +55,19 @@
55
55
 
56
56
 
57
57
  結果、`operator<<`のオーバーロードはADLの候補に挙がらず、int[3][3]はポインタに変換されて`operator<<`が解決されたことにより、先頭ポインタのアドレスが表示されたものと考えられます。
58
+
59
+
60
+
61
+ ```cpp
62
+
63
+ template<class T, size_t Y, size_t X>
64
+
65
+ using matrix = T[Y][X];
66
+
67
+ ```
68
+
69
+
70
+
71
+ とalias templateを記述したときに想定通りオーバーロードが解決されるのは、
72
+
73
+ `T[Y][X]`が依存型名ではないため、推論の対象となるからです。