gpt4 book ai didi

c++ - 奇怪的编译器错误

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:33:14 25 4
gpt4 key购买 nike

我刚刚在使用 msvc 时遇到了这个小错误。对我来说这看起来像是一个解析问题,但我不确定。
下面给出了 C2143 syntax error: missing ';'之前'}'

#include <vector>

struct X { };

X f(const std::vector<int> v)
{
for (auto i : v)
if (true)
return X{}; // <--

return X{};
}

int main()
{
const auto x = f(std::vector<int>{});
}

不过,接下来的 4 个变体编译得很好。
这个

X f(const std::vector<int> v)
{
for (auto i : v)
if (true)
return X(); // <--

return X{};
}

还有这个

X f(const std::vector<int> v)
{
for (auto i : v)
if (true) { // <--
return X{}; // <--
} // <--
return X{};
}

还有这个

X f(const std::vector<int> v)
{
for (auto i : v) { // <--
if (true)
return X{}; // <--
} // <--
return X{};
}

还有这个

X f(const std::vector<int> v)
{
//for (auto i : v) // <--
if (true)
return X{}; // <--

return X{};
}

(对不起,愚蠢的代码墙。)
我是否遗漏了一些神秘的规则,或者这是一个编译器错误?

适用于桌面的 Visual Studio 2015 (v140) 速成版
在调试和 Release模式下编译为 x64
所有编译器选项都设置为默认值(警告级别提高到 W4 除外)

最佳答案

对我来说这看起来像是一个编译器错误。我可以在 rextester.com 上重现你的错误, 但在 webcompiler.cloudapp.net代码编译正常(Visual C++ 编译器版本为 19.10.24807.0 (x86))。

同时也是最新gccclang编译代码。

语法本身是完全有效的。

关于c++ - 奇怪的编译器错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41256603/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com