Fix GCC false positive -Warray-bounds in geom::swizzle when using ubsan

This commit is contained in:
Nikita Lisitsa 2024-11-19 19:09:01 +03:00
parent ad752f0ea1
commit fad1580379

View file

@ -21,12 +21,17 @@ namespace psemek::geom
}
#pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Warray-bounds"
template <std::size_t ... I>
constexpr auto swizzle = [](auto const & x){
static_assert(((I == -1 || I < std::decay_t<decltype(x)>::static_dimension) && ...));
using result = typename detail::swizzle_rebind<std::decay_t<decltype(x)>>::template type<sizeof...(I)>;
using element = std::decay_t<decltype(x[0])>;
return result{(I == (-1) ? element{} : x[I])...};
};
#pragma GCC diagnostic pop
}