所以我有以下代码:
void invert(T)(T[2][] arr)
{
auto result = new T[2][arr.length];
foreach (i, v; arr)
result[i] = [-v[0], -v[1]];
return result;
}
Run Code Online (Sandbox Code Playgroud)
我称之为:
invert([[5, 6], [6, 7]]);
Run Code Online (Sandbox Code Playgroud)
我得到:
test.d(94):错误:模板test.invert(T)与任何函数模板声明都不匹配
test.d(94):错误:模板test.invert(T)无法从参数类型推导出模板函数!()(int[][])
在不丢失自动推理功能的情况下,最简单的解决方法是什么?
问题是你不能有一个静态数组的文字.最终得到一个动态数组 - int[][]在这种情况下 - 而不是int[2][]你想要的.推理工作得很好.这是你给它的类型是错误的.您将不得不创建一个正确类型的变量.