我正在阅读 C++ Primer 5th (6.2.6. Functions with Varying Parameters) 中的代码:
void error_msg(ErrCode e, initializer_list<string> il)
{
cout << e.msg() << ": ";
for (const auto &elem : il)
cout << elem << " ";
cout << endl;
}
我总是用
auto
直接在一个范围内 for
.像这样:for (auto &elem : il)
但我从来没见过
const auto&
之前。我知道 initializer_list
中的元素总是 const 值 .是不是用的原因const auto&
?最佳答案
由于 std::initializer_list
的元素是 const
,迭代 auto& elem
和 const auto& elem
具有相同的语义。写的优势const
是它让任何阅读代码的人都清楚内容不会被修改(即使无论如何都不可能修改内容)。
关于c++ - 在处理 std::initializer_list 的元素的范围内使用 "const auto&"是否是一个好习惯,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26541920/