当前位置: 首页 > 知识库问答 >
问题:

为什么我不能在c 20中的istream_视图之后使用take()

汪弘毅
2023-03-14

代码显示了我的问题,我不能在之后使用ake(3)istream_view

错误消息是:

/home/linuxbrew/。linuxbrew/Cellar/gcc/11.1。0_1/include/c/11.1。0/范围:1775:48:错误:传递'std::ranges::take_view

#include <ranges>

using namespace std::views;
using namespace std::ranges;
int to_sq(int a){return a*a;}
int main()
{

    auto m_range = istream_view<int>(std::cin);
    // error
    for (auto i : m_range | transform(to_sq)|take(3))
    {
        std::cout << i << std::endl;
    }
}

共有1个答案

从焱
2023-03-14

这是LWG 3391。

这里的转换无关紧要,只是尝试迭代istream_view

代码无效,因为ranges::take_view::sentinel::operator==()必须调用counted_iterator::base()以将基础迭代器与其sentinel进行比较,因此此operator==()要求基础迭代器是可复制的。

GCC11.1还没有包含这个补丁(特别是在11.1发布几周后发布的这个提交),但是gcc主干现在包含了。

 类似资料:
  • 我正在尝试使用文件系统。我的< code>CMakeLists.txt中有< code>-std=c 11 -std=c 1y。GCC版本为4.9.2。然而,我得到了一个错误: 使用的正确方法是什么?

  • 从TensorArray读取: 使用: 问题: 回溯(最近一次调用last):RLU培训中第130行的文件“\main.py”。train()文件“C:\Users\user\Documents\Projects\rl toolkit\rl_training.py”,第129行,在train self中_rpm,赛尔夫。批量大小,自行确定。梯度步数,记录步数b=self。在call result=

  • 问题内容: 我正在使用Docker ,我想将构建参数传递给FROM和Dockerfile中的其他行。您希望以下内容能起作用: 它适用于第二行(),但其行为类似于未在该行中设置: 步骤1/3:ARG FROM_IMAGE = ubuntu:bionic步骤2/3:FROM $ FROM_IMAGE —> 8626492fecd3 […]步骤3/3:COPY sources_list / $ {SOU

  • 我试图使用Java8Javadoc工具,但它抱怨是一个未知标记: 我看到有一些方法可以禁用doclint,但我真的想知道哪些标签列表被支持(或者为什么这个不支持)。 更多信息在这个问题,这个问题和从这个博文。

  • 我需要一些帮助,情况是我能够返回新的CSV文件,但无法将绘图图返回到另一个页面,并且我在不同的场景下分离了。有人能指出我应该对代码做什么吗?或者给我一些提示,提前谢谢! 应用程序。派克

  • 我正在做一个从屏幕上方滑出的祝酒词,如下所示: 但是当我添加作为toast容器的子视图时,toast将不再动画和显示。下面是我的函数: 有办法解决这个问题吗?