Welcome to C++, where arrays decay to pointers faster than your career expectations after reading legacy code. Someone just discovered that when you pass an array to a function, it immediately forgets its own size and becomes a humble pointer. No size information, no bounds checking, just raw pointer energy. So now you're stuck passing array sizes as separate parameters like it's 1972. Meanwhile, Python devs are over there with their .length property, sipping lattes, while C# folks have their nice Array.Length . But here you are, manually tracking array sizes like some kind of memory accountant. The "C with classes" nickname hits different when you realize Bjarne Stroustrup gave us templates, RAII, and move semantics, but somehow we're still manually babysitting array bounds in 2025. At least we have std::vector and std::array now... if you can convince your team to stop writing C code in .cpp files.