#include <iostream>
template <int M, int N>
void print1(int src[M][N]) { }
void print2(int src[4][4]) { }
int main() {
int src[][4] = {
{ 1, 2, 3, 4},
{ 5, 6, 7, 8},
{ 9, 10, 11, 12},
{13, 14, 15, 16},
};
print1(src);
// gives error
// error: no matching function for call to 'print1(int [4][4])'
print2(src);
// works!
}
上記のコードでprint2()
は、期待どおりに機能しprint1()
ますが、エラーが発生します
エラー:「print(int [4] [4])」の呼び出しに一致する関数がありません
わかりません。まったく同じように見えます。ハードコードされた値を置き換えてテンプレートを使用し、任意のサイズの配列を受け入れることができるようにしました。
なぜ機能しないのですか?私は何が間違っているのですか?