Gar*_*arp 5 c++ compiler-errors parsing-error
我刚刚用msvc碰到了这个小错误.它看起来像是一个解析问题,但我不确定.
以下给出了C2143语法错误:缺少';' 之前'}'
#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>{});
}
Run Code Online (Sandbox Code Playgroud)
接下来的4个版本编译得很好.
这个
X f(const std::vector<int> v)
{
for (auto i : v)
if (true)
return X(); // <--
return X{};
}
Run Code Online (Sandbox Code Playgroud)
还有这个
X f(const std::vector<int> v)
{
for (auto i : v)
if (true) { // <--
return X{}; // <--
} // <--
return X{};
}
Run Code Online (Sandbox Code Playgroud)
还有这个
X f(const std::vector<int> v)
{
for (auto i : v) { // <--
if (true)
return X{}; // <--
} // <--
return X{};
}
Run Code Online (Sandbox Code Playgroud)
还有这个
X f(const std::vector<int> v)
{
//for (auto i : v) // <--
if (true)
return X{}; // <--
return X{};
}
Run Code Online (Sandbox Code Playgroud)
(对不起愚蠢代码的墙.)
我错过了一些神秘的规则,还是这个编译器错误?
Visual Studio 2015(v140)Express Edition for Desktop
在调试和发布模式下编译为x64
所有编译器选项均为默认值(警告级别除了W4)
对我来说这看起来像是一个编译器错误。我可以在rextester.com上重现您的错误,但在webcompiler.cloudapp.net上代码可以正常编译(Visual C++ 编译器版本为19.10.24807.0 (x86))。
语法本身是完全有效的。
| 归档时间: |
|
| 查看次数: |
316 次 |
| 最近记录: |