Prevent predux_half for DoublePacket from accidentally catching complex Packets of size >= 16

libeigen/eigen!2125
This commit is contained in:
Chip Kerchner
2026-02-08 13:19:45 -05:00
committed by Rasmus Munk Larsen
parent 4d05fcf8da
commit 0ac2a2df9f

View File

@@ -650,7 +650,9 @@ const DoublePacket<Packet>& predux_half(const DoublePacket<Packet>& a,
template <typename Packet>
DoublePacket<typename unpacket_traits<Packet>::half> predux_half(
const DoublePacket<Packet>& a, std::enable_if_t<unpacket_traits<Packet>::size == 16>* = 0) {
const DoublePacket<Packet>& a,
std::enable_if_t<unpacket_traits<Packet>::size >= 16 &&
!NumTraits<typename unpacket_traits<Packet>::type>::IsComplex>* = 0) {
// yes, that's pretty hackish :(
DoublePacket<typename unpacket_traits<Packet>::half> res;
typedef std::complex<typename unpacket_traits<Packet>::type> Cplx;