std::span能彻底解决数组传参退化问题,因其将数据地址与元素个数封装为类型安全视图;但须避免构造时传入已退化的指针,且函数参数必须声明为std::span而非int[]或int*。

std::span 能彻底绕过数组传参退化问题,但前提是别在构造时就传入已退化的指针。
函数参数声明用 std::span,不是 int[] 或 int*
一旦你在函数签名里写 void f(int arr[]) 或 void f(int* arr),退化已经发生——编译器拿到的只剩指针,原始长度信息永久丢失。而 std::span 是类型安全的视图,它把“数据起始地址 + 元素个数”打包成一个对象:
std::vector
C++免费学习笔记(深入):立即使用
在学习笔记中,你将探索 C++ 的入门与实战技巧!











