相关疑难解决方法(0)

为什么 std::ranges::filter_view 对象必须是非常量才能查询其元素?

#include <ranges>
#include <iostream>
#include <string_view>

using namespace std::literals;

int main()
{
    auto fn_is_l = [](auto const c) { return c == 'l'; };

    {
        auto v = "hello"sv | std::views::filter(fn_is_l);
        std::cout << *v.begin() << std::endl; // ok
    }

    {
        auto const v = "hello"sv | std::views::filter(fn_is_l);
        std::cout << *v.begin() << std::endl; // error
    }
}
Run Code Online (Sandbox Code Playgroud)

请参阅:https : //godbolt.org/z/vovvT19a5

<source>:18:30: error: passing 'const std::ranges::filter_view<
                       std::basic_string_view<char>, main()::
                       <lambda(auto:15)> >' as 'this' argument discards
                       qualifiers [-fpermissive]
   18 |         std::cout << *v.begin() …
Run Code Online (Sandbox Code Playgroud)

c++ standards constants c++20 std-ranges

30
推荐指数
2
解决办法
694
查看次数

标签 统计

c++ ×1

c++20 ×1

constants ×1

standards ×1

std-ranges ×1