在下面的代码中:
我如何避免在调用 b 函数时必须指定 N 的值为 2?为什么不能自动推断出此类型?如果不指定,将会出现以下错误: 'b': 没有找到匹配的重载函数 'int b(int,const std::array &)': 无法推断出 'N' 的模板参数。
template<size_t N>
int b(int q, const std::array<int, N>& types)
{
int r = q;
for (int t : types)
{
r = r + t;
}
return r;
}
int main()
{
b<2>(9, { 2,3 });
}
我如何避免在调用 b 函数时必须指定 N 的值为 2?为什么不能自动推断出此类型?如果不指定,将会出现以下错误: 'b': 没有找到匹配的重载函数 'int b(int,const std::array &)': 无法推断出 'N' 的模板参数。