无法推断出模板类型?

时间:2011-10-30 00:50:09

标签: d

所以我有以下代码:

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[][])推断出模板函数

在不丢失自动推理功能的情况下解决此问题的最简单方法是什么?

1 个答案:

答案 0 :(得分:5)

问题是你不能拥有一个静态数组的文字。您最终会得到一个动态数组 - 在这种情况下为int[][] - 而不是您想要的int[2][]。推理工作得很好。这是你给它的类型是错误的。您将不得不创建一个正确类型的变量。