// SPDX-License-Identifier: MIT // Copyright (c) 2018-2023, Advanced Micro Devices, Inc. All rights reserved. #pragma once #include #include #include #include namespace ck { namespace ranges { template auto copy(InputRange&& range, OutputIterator iter) -> decltype(std::copy(std::begin(std::forward(range)), std::end(std::forward(range)), iter)) { return std::copy(std::begin(std::forward(range)), std::end(std::forward(range)), iter); } template auto fill(OutputRange&& range, const T& init) -> std::void_t(range)), std::end(std::forward(range)), init))> { std::fill(std::begin(std::forward(range)), std::end(std::forward(range)), init); } template auto transform(InputRange&& range, OutputIterator iter, UnaryOperation unary_op) -> decltype(std::transform(std::begin(range), std::end(range), iter, unary_op)) { return std::transform(std::begin(range), std::end(range), iter, unary_op); } } // namespace ranges } // namespace ck