回答編集履歴
1
なぜ T[X][Y] だと正しく動くかを追記
answer
CHANGED
@@ -26,4 +26,12 @@
|
|
26
26
|
|
27
27
|
は依存型名なので関数テンプレートの推論対象ではないです。
|
28
28
|
|
29
|
-
結果、`operator<<`のオーバーロードはADLの候補に挙がらず、int[3][3]はポインタに変換されて`operator<<`が解決されたことにより、先頭ポインタのアドレスが表示されたものと考えられます。
|
29
|
+
結果、`operator<<`のオーバーロードはADLの候補に挙がらず、int[3][3]はポインタに変換されて`operator<<`が解決されたことにより、先頭ポインタのアドレスが表示されたものと考えられます。
|
30
|
+
|
31
|
+
```cpp
|
32
|
+
template<class T, size_t Y, size_t X>
|
33
|
+
using matrix = T[Y][X];
|
34
|
+
```
|
35
|
+
|
36
|
+
とalias templateを記述したときに想定通りオーバーロードが解決されるのは、
|
37
|
+
`T[Y][X]`が依存型名ではないため、推論の対象となるからです。
|