首页 > 解决方案 > 这里的 T(&arr)[N] 中的 arr 是什么类型

问题描述

我在学习模板时遇到了下面这个功能

template<typename T, int N>
int length(const T(&arr)[N])
{
    return N;
}

int main(){
  int nums[]{1,2,3,4};
  int len = length(nums);
}

我曾经__PRETTY_FUNCTION__了解发生了什么,输出是

int length(const T (&)[N]) [with T = int; int N = 4]

const T (&)[N]-> 表示大小为 N 的类型 T 数组引用?这里的类型是arr什么?

标签: c++arrays

解决方案


这里的 arr 类型是什么?

它是const T (&)[N]对一个包含 N 个类型的对象的数组的引用const T

请注意,这个函数模板(或几乎相同)已经存在于标准库中(按名称std::size),因此无需重新编写它。


推荐阅读