在模板实参推断过程中,允许数组到指针的转换。但是,如果形参是一个引用,则数组不会转换为一个指针。
时间: 2024-02-15 07:01:35 浏览: 74
在模板实参推断过程中,确实允许数组到指针的转换。但是,如果形参是一个引用,则数组也不会转换为一个指针。这是因为在模板实参推导过程中,引用类型的形参与其他类型的形参一样,也需要匹配实参的类型。如果实参是一个数组类型,则为了匹配引用类型的形参,需要使用数组的别名,即数组名作为实参,而不是将数组转换为指针。
例如,考虑以下函数模板:
```
template<typename T>
void foo(T& param);
```
当使用一个数组作为实参调用该函数模板时,可以使用数组名作为实参,如下所示:
```
int arr[10];
foo(arr);
```
在这种情况下,数组`arr`不会转换为一个指针,而是作为一个数组名作为实参传递给函数模板。在函数模板内部,参数`param`表示对数组`arr`的引用。
阅读全文