为什么 Visual Studio Community 2022 编译我的 C++ 代码?

ano*_*ous 2 c++ compilation visual-studio

在我的程序中,我有以下代码,并且以某种方式它可以编译,但它不应该编译。

#include <list>
#include <iostream>

int main(int argc, char* argv[])
{
    std::list<int> collection = { 1, 2, 3, 4, 5, 6 };

    for each (auto i in collection)
    {
        std::cout << i;
    }

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

我从自动完成中得到了这段代码:

for each (auto item in collection)

我在 Developer Powershell 中使用以下命令来编译我的代码:

cl /EHsc /std:c++17 .\programm.cpp

请帮我。我不知道为什么会发生这种情况,当我试图在互联网上搜索它时,我发现的只是它无法编译的问题。

Rem*_*eau 5

循环for each是 Microsoft 特定于 C++ 语言的扩展:

for each,in

迭代数组或集合。此非标准关键字在 C++/CLI 和本机 C++ 项目中均可用。但是,不建议使用它。考虑使用标准的基于范围的 for 语句 (C++)

...

句法

for each ( type identifier in expression ) {
  statements
}
Run Code Online (Sandbox Code Playgroud)

这就是代码在 Visual Studio 中编译的原因。它不会在任何其他 C++ 编译器中编译。