gpt4 book ai didi

c++ - 函数模板中的数组类型推导

转载 作者:可可西里 更新时间:2023-11-01 15:02:34 24 4
gpt4 key购买 nike

我有一个模板方法如下:-

template<typename T, int length>
void ProcessArray(T array[length]) { ... }

然后我有使用上述方法的代码:-

int numbers[10] = { ... };
ProcessArray<int, 10>(numbers);

我的问题是为什么我必须明确指定模板参数。不能自动推导以便我可以使用如下:-

ProcessArray(numbers); // without all the explicit type specification ceremony

我确信我遗漏了一些基本的东西!备用一把锤子!

最佳答案

您不能按值传递数组。在函数参数中,T array[length]T* array完全相同。没有可供推断的长度信息。

如果你想按值获取数组,你需要像 std::array 这样的东西。否则,您可以引用它,不会丢失尺寸信息:

template<typename T, int length>
void ProcessArray(T (&array)[length]) { ... }

关于c++ - 函数模板中的数组类型推导,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11179476/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com