#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])'
我不明白,它们看起来完全一样,我只是将硬编码值替换为使用模板,以便它可以接受任何大小的数组。
为什么它不起作用?我究竟做错了什么?