std::views::filter и const
От: sergii.p  
Дата: 30.11.20 17:48
Оценка:
всем привет.
Натолкнулся на довольно странную ошибку. Не понимаю, почему она возникает

#include <iostream>
#include <ranges>

int main()
{
    /*const*/ auto odds = std::views::iota(1)
        | std::views::filter([](int i){ return i % 2 == 0; })
        | std::views::take(100);
    for(const auto i: odds) {
        std::cout << i << std::endl;
    }
}


этот код успешно компилируется. Но если раскомментировать const, то получаю ошибку

error: passing 'const std::ranges::take_view<std::ranges::filter_view<std::ranges::iota_view<int, std::unreachable_sentinel_t>, main()::<lambda(int)> > >' as 'this' argument discards qualifiers [-fpermissive]
25 | for(const auto i: odds) {


Почему так происходит? gcc 11.0.0.20201
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.