step20
Loading...
Searching...
No Matches
to.hpp
Go to the documentation of this file.
1// Andrew Naplavkov
2
3#ifndef STEP20_TO_HPP
4#define STEP20_TO_HPP
5
6#include "detail/utility.hpp"
7#include <algorithm>
8
9namespace step20 {
10
12template <class To, std::ranges::input_range From>
13To to(From&& from)
14{
15 auto result = To{};
16 if constexpr (requires { result.reserve(std::ranges::size(from)); })
17 result.reserve(std::ranges::size(from));
18 std::ranges::copy(from, emplace_iterator(result));
19 return result;
20}
21
22template <template <class...> class To, std::ranges::input_range From>
23auto to(From&& from)
24{
25 return to<To<std::ranges::range_value_t<From>>>(std::forward<From>(from));
26}
27
28} // namespace step20
29
30#endif // STEP20_TO_HPP
Definition edit_distance.hpp:11
To to(From &&from)
Definition to.hpp:13