gpt4 book ai didi

Visual Studio 中基于 C++17 广义范围的 For 循环

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:06:04 26 4
gpt4 key购买 nike

Visual Studio 2017 声称它们支持基于 C++17 范围的 for 循环。但是,当我尝试编译时出现错误,表明它使用的是 C++11 风格。有没有人设法让哨兵循环在 VS 2017 中工作?

这是一些示例代码。我删除了这段代码以使其简短,因此它显然不能正常工作,但它应该可以编译。

struct MyExampleIterator
{
int operator*() const { return 0; }

MyExampleIterator& operator++() { return *this; }
};

class MyExampleSentinel {};

bool operator!=(const MyExampleIterator& a, const MyExampleSentinel& b) { return true; }

struct MyExampleRange
{
MyExampleIterator begin() { return MyExampleIterator(); }
MyExampleSentinel end() { return MyExampleSentinel(); }
};

如果我尝试在 VS2017 (15.2) 中基于范围的 for 循环中使用此类,我会得到 error C3538: in a declarator-list 'auto' must always deduce to the same type

MyExampleRange range;
for (auto i : range) {} // error C3538

但如果我手动构造 C++17 标准代码,它编译得很好:

// Compiles fine
MyExampleRange range;
{
auto && __range = range;
auto __begin = __range.begin();
auto __end = __range.end();
for (; __begin != __end; ++__begin) {
auto i = *__begin;
}
}

最佳答案

问题是,当我使用 VS2017 时,项目仍然针对 VS2015。在重新定位到 2017 年之后,它编译正常。

感谢您的帮助。它在 15.6 中编译的报告让我在更新到 15.6 后开始挖掘其他答案,但它仍然没有编译。谢谢。

关于Visual Studio 中基于 C++17 广义范围的 For 循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50121500/

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