commit 92037e8372c63cdb28182e2296b12f6c7ee88699
parent 36f6562cbff550d18d823a9499e4638ba7f36969
Author: d.levin256@gmail.com <d.levin256@gmail.com>
Date: Thu, 8 Sep 2016 18:34:30 +0300
New implementation for sequence
Diffstat:
1 file changed, 5 insertions(+), 5 deletions(-)
diff --git a/include/kfr/base/basic_expressions.hpp b/include/kfr/base/basic_expressions.hpp
@@ -89,12 +89,12 @@ CMT_INLINE internal::expression_iterator<T, E1> to_iterator(E1&& e1)
return internal::expression_iterator<T, E1>(std::forward<E1>(e1));
}
-template <typename T, typename... Ts>
-CMT_INLINE auto sequence(T x, Ts... rest)
+template <typename... Ts, typename T = common_type<Ts...>>
+inline auto sequence(const Ts&... list)
{
- const T seq[] = { x, static_cast<T>(rest)... };
- constexpr size_t N = arraysize(seq);
- return lambda<T>([=](size_t index) { return seq[index % N]; });
+ return lambda<T>([seq = std::array<T, sizeof...(Ts)>{ static_cast<T>(list)... }](size_t index) {
+ return seq[index % seq.size()];
+ });
}
template <typename T = int>