Информация об изменениях

Сообщение создать range и передать его в функцию от 05.03.2022 10:57

Изменено 05.03.2022 11:36 DTF

создать range и передать его в функцию
Добрый день.

Я начал разбираться что за зверь такой эти ranges, и что-то не могу понять, как с ними работать.

Вот вроде бы простая хотелка:
взять vector<int> или list<int>, отфильтровать значения,
результат передать в _нешаблонную_ функцию, внутри функцию, в этой функции проитерироваться по полученному диапазону

Т.е. что-то такое:

bool IsEven(int i)
{
    return i % 2 == 0;
}

void Foo(a_strange_type<int> range)
{
    for (int i : range)
        std::cout << i << std::endl;
}

int main()
{
    std::vector<int> v = {1, 2, 3};
    std::list<int> l = {4, 5, 6};

    Foo(v | IsEven); 
    Foo(l | IsEven);
}


Как это сделать?
Или я чего-то не понимаю, и так нельзя?
создать range и передать его в функцию
Добрый день.

Я начал разбираться что за зверь такой эти ranges, и что-то не могу понять, как с ними работать.

Вот вроде бы простая хотелка:
взять vector<int> или list<int>, отфильтровать значения,
результат передать в нешаблонную функцию, в этой функции проитерироваться по полученному диапазону

Т.е. что-то такое:

bool IsEven(int i)
{
    return i % 2 == 0;
}

void Foo(a_strange_type<int> range)
{
    for (int i : range)
        std::cout << i << std::endl;
}

int main()
{
    std::vector<int> v = {1, 2, 3};
    std::list<int> l = {4, 5, 6};

    Foo(v | IsEven); 
    Foo(l | IsEven);
}


Как это сделать?
Или я чего-то не понимаю, и так нельзя?