将对象传递给函数而不将其包装到 std::ref,而参数被指定为常量引用

Pass object to a function without wrapping it into std::ref, while argument is specified as a const reference

我有下面的c++代码(只是一道题的简单例子)

#include <iostream>
#include <string>
#include <vector>

double get_first(const std::vector<double>& vec) {
    return vec[0];
}

int main()
{
  std::vector<double> some_vec = {1, 2};
  std::cout << get_first(some_vec);
}

所以这里函数的参数get_first是const reference,

虽然我传递了整个向量 some_vec 而不是将其包装到 std::ref 中。 c++ 是否在此处复制完整对象?

std::ref 不是为了那个。它用于将现有引用转换为对象,用于无法接受引用的地方,例如 std::vector<>。这个想法是不能重新分配引用或将其设置为空,因此 STL 容器中的内容(如移动等)不适用于原始引用。很可能它在内部将包装引用转换为指针。

在您的示例中,参数自动作为引用传递。