31 August 2023

C++ 核心指南目录

“Prefer concept names over auto for local variables”

理由

auto 是最弱的 conceptconceptauto 传递的信息更多。

例子

vector<string> v{ "abc", "xyz" };
auto& x = v.front();        // bad
String auto& s = v.front(); // good (String is a GSL concept)

这里 String 是 GSL 中定义的 concept 。当 Stringauto 一起用的时候,这个 String 就被当作 concept 使用了。这里,其实 String 这个 concept 是用来约束 auto 的,不然, auto 就太自由了。