commit aedee8382a5419f07ea1bbe87b4924f02ba6b019
parent 300566d58a5da6f93247089086ae1d57f45e0069
Author: d.levin256@gmail.com <d.levin256@gmail.com>
Date: Wed, 27 Jul 2016 14:48:59 +0300
pack now is an alias for make_vector
Diffstat:
1 file changed, 10 insertions(+), 1 deletion(-)
diff --git a/include/kfr/base/vec.hpp b/include/kfr/base/vec.hpp
@@ -551,6 +551,15 @@ constexpr KFR_INLINE vec<T, N> make_vector(cvals_t<T, Values...>)
}
KFR_FN(make_vector)
+template <typename Type = void, typename Arg, typename... Args, size_t N = (sizeof...(Args) + 1),
+ typename SubType = conditional<is_void<Type>::value, common_type<Arg, Args...>, Type>>
+constexpr KFR_INLINE vec<SubType, N> pack(const Arg& x, const Args&... rest)
+{
+ return internal::make_vector_impl<SubType>(csizeseq<N * widthof<SubType>()>, static_cast<SubType>(x),
+ static_cast<SubType>(rest)...);
+}
+KFR_FN(pack)
+
template <typename T, size_t N>
struct vec : vec_t<T, N>
{
@@ -650,7 +659,7 @@ struct vec : vec_t<T, N>
KFR_INLINE array_t arr() { return ref_cast<array_t>(v); }
template <typename U, KFR_ENABLE_IF(std::is_convertible<T, U>::value)>
- constexpr operator vec<U, N>() noexcept
+ constexpr operator vec<U, N>() const noexcept
{
return cast<U>(*this);
}