Как использовать range-v3 range :: actions :: transform? - PullRequest
0 голосов
/ 13 апреля 2020

Я хочу использовать 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 в таком случае

1 Ответ

2 голосов
/ 13 апреля 2020

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

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

Вот вам демо

...