代码之家  ›  专栏  ›  技术社区  ›  Christian Hackl

为什么要将'std::scoped_lock'变量标记为const?

  •  3
  • Christian Hackl  · 技术社区  · 6 年前

    我在一个代码库上尝试了Visual Studio 2017最新版本的“代码分析”功能,该代码库使用了许多 std::scoped_lock 变量如下:

    void f()
    {
        std::scoped_lock<std::mutex> my_lock(my_mutex);
        // ...
    }
    

    对于“Microsoft所有规则”配置,Visual Studio建议如下:

    warning C26496: The variable 'my_lock' is assigned only once, mark it as const (con.4).
    

    我通常使用本地语言 const 变量,但我从来没有觉得有必要对不允许修改的类型进行修改。A. std::范围锁定 只能建造和销毁。我猜VisualStudio只是盲目地在这里应用了一个非常笼统的指导原则,但我是否遗漏了什么?会吗 std::scoped_lock<std::mutex> const 是否允许编译器执行不同的操作,或在编译过程中检测错误?

    0 回复  |  直到 6 年前