commit bfd1b8cd4086e3b10cdd55185fe55e5d00774b31
parent 7568554cc4d81e78a992ccd2305fae1f0d6b2821
Author: d.levin256@gmail.com <d.levin256@gmail.com>
Date: Mon, 29 Aug 2016 05:47:46 +0300
cforeach: faster implementation
Diffstat:
1 file changed, 3 insertions(+), 9 deletions(-)
diff --git a/include/kfr/cometa.hpp b/include/kfr/cometa.hpp
@@ -1183,16 +1183,10 @@ using has_data_size = details::has_data_size_impl<decay<T>>;
template <typename T>
using value_type_of = typename decay<T>::value_type;
-template <typename T, typename Fn>
-CMT_INTRIN void cforeach(cvals_t<T>, Fn&&)
+template <typename T, T... values, typename Fn>
+CMT_INTRIN void cforeach(cvals_t<T, values...>, Fn&& fn)
{
-}
-
-template <typename T, T v0, T... values, typename Fn>
-CMT_INTRIN void cforeach(cvals_t<T, v0, values...>, Fn&& fn)
-{
- fn(cval<T, v0>);
- cforeach(cvals_t<T, values...>(), std::forward<Fn>(fn));
+ swallow{ (fn(cval<T, values>), void(), 0)... };
}
template <typename T, typename Fn, CMT_ENABLE_IF(has_begin_end<T>::value)>