回答編集履歴
1
なぜ T[X][Y] だと正しく動くかを追記
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]`が依存型名ではないため、推論の対象となるからです。
|