Вместо того, чтобы копировать данные в вектор, вы также можете изменить функцию на , взяв span
.Вы все равно должны будете указать длину вместе с указателем.
Например,
void takes_span(std::span<double>) {}
int main()
{
std::vector<double> vec = { 1, 2, 3 };
double arr[3] = { 4, 5, 6 };
double * ptr = arr;
takes_span(vec);
takes_span(arr);
takes_span({ptr, 3});
}