我在使用多个std::scoped_lock
变量的代码库上尝试了最新Visual Studio 2017版本的“代码分析”功能:
void f()
{
std::scoped_lock<std::mutex> my_lock(my_mutex);
// ...
}
使用“ Microsoft All Rules”配置,Visual Studio建议以下内容:
warning C26496: The variable 'my_lock' is assigned only once, mark it as const (con.4).
我通常一直都在使用局部const
变量,但是我从来没有觉得对于不允许修改的类型是没有必要的。 std::scoped_lock
只能被构造和销毁。我想Visual Studio在这里只是盲目地应用了一个非常通用的准则,但是我会错过吗? std::scoped_lock<std::mutex> const
会允许编译器做一些不同的事情,还是在编译期间检测到错误?