Как использовать range-v3 ranges::actions::transform?

Я хочу использовать ranges-v3 для преобразования массива на месте. Я могу успешно использовать ranges::transform, но не смог использовать actions::transform.

int arr[]{1, 2, 3};
auto fn = [](auto e) { return e + 1; };
ranges::transform(arr, std::begin(arr), fn); // ok
arr |= actions::transform(std::begin(arr), fn); // error

Сообщение об ошибке:

fatal error: no matching function for call to object of type 'const ranges::actions::transform_fn'
        arg |= actions::transform(std::begin(arr), std::begin(arr),
               ^~~~~~~~~~~~~~~~~~

Как использовать actions::transform в таком случае?


person xmllmx    schedule 13.04.2020    source источник
comment
Извините, я использую range-v3, а не std::ranges.   -  person xmllmx    schedule 13.04.2020
comment
Ваше сообщение об ошибке не соответствует строке кода.   -  person cigien    schedule 13.04.2020
comment
@cigien Ошибка возникает в последней строке кода.   -  person xmllmx    schedule 13.04.2020
comment
Да, но текст сообщения об ошибке не соответствует этой строке.   -  person cigien    schedule 13.04.2020


Ответы (1)


В range-v3 вы бы просто сделали

arr |= ranges::actions::transform(fn);

Вот демонстрация

person cigien    schedule 13.04.2020