使用&符号命名的变量后跟下划线是什么意思?

Bru*_*uno 0 c++ reference c++17

我正在研究C ++,发现了这种奇怪的语法。这&_是什么意思,为什么作者可以将该变量用作_1st

std::sort(open_list.begin(), open_list.end(), [] (const auto &_1st, const auto &_2st) {
  return _1st->h_value + _1st->g_value < _2st->h_value + _2st->g_value
});
Run Code Online (Sandbox Code Playgroud)

编辑1

我认为,要创建变量的引用,必须使用&运算符,后跟名称,例如:&_1st(注意它们之间的空白)。

下划线是在C ++中声明名称变量的一种特殊方法吗?

son*_*yao 8

&用于声明引用;所以const auto &_1st被声明名为参数_1st,其类型是左值参考(至const)。一样const auto & _1st,而且空间是多余的;您甚至可以将其写为const auto&_1st,这对于下划线并不特殊。

请注意,下划线可用于标识符

一个标识符是任意长的数字,下划线,小写和大写拉丁字母序列,且最Unicode字符(详见下文)。有效标识符必须以非数字字符(拉丁字母,下划线或Unicode非数字字符)开头。