vec: Added no-overhead constructor for tag change

This commit is contained in:
Jan Mrna
2025-10-17 10:11:15 +02:00
parent b94b18993d
commit cfe48661d8

View File

@@ -46,6 +46,9 @@ public:
vec(std::array<T, N> array) : m_Array{array} {}
template<typename OtherTag>
vec(vec<T, N, OtherTag>&& other) : m_Array{std::move(other.m_Array)} {}
//
// Access to elements & data
//
@@ -276,11 +279,17 @@ public:
}
template <typename TargetTag>
vec<T,N,TargetTag> ChangeTag()
vec<T,N,TargetTag> ChangeTag() const &
{
return vec<T,N,TargetTag>(m_Array);
}
template <typename TargetTag>
vec<T,N,TargetTag> ChangeTag() &&
{
return vec<T,N,TargetTag>(std::move(*this));
}
// Structured binding support for N == 2
template<size_t I>
const T& get() const