所以我有以下代码:
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;
}
我称之为:
invert([[5, 6], [6, 7]]);
我得到了:
test.d(94):
错误:模板test.invert(T)
与任何功能模板声明都不匹配test.d(94):
错误:模板test.invert(T)
无法从参数类型!()(int[][])
推断出模板函数
在不丢失自动推理功能的情况下解决此问题的最简单方法是什么?
答案 0 :(得分:5)
问题是你不能拥有一个静态数组的文字。您最终会得到一个动态数组 - 在这种情况下为int[][]
- 而不是您想要的int[2][]
。推理工作得很好。这是你给它的类型是错误的。您将不得不创建一个正确类型的变量。