在向量上使用基于范围的 for 循环时,CppCoreChecker C 样式投射警告

CppCoreChecker C-Style cast warning when using range based for loop on vector

假设以下代码:

#include <iostream>
#include <vector>
#include <string>

int main() {
    std::vector<std::string> lines;
    lines.push_back("line");
    for (const auto& s : lines) {
        std::cout << s;
    }
}

在 for 循环的那一行,我收到以下警告:

C26493 Don't use C-style casts that would perform a static_cast downcast, const_cast, or reinterpret_cast.

有人可以解释这是从哪里来的吗?我正在使用 Visual Studio 2017 Community Edition 版本 15.2。

正如在 this bug report 中看到的那样,当插入到 basic_iostream 中时,它似乎只发生在 std::string 类型中。此错误已解决,但尚未发布,所以现在您只能等待。