diff --git a/test/packetmath.cpp b/test/packetmath.cpp index 96aeb8e29..5d38ce6b4 100644 --- a/test/packetmath.cpp +++ b/test/packetmath.cpp @@ -50,17 +50,19 @@ struct test_cast_helper { template void test_cast() { + typedef typename internal::unpacket_traits::type FromScalar; + typedef typename internal::packet_traits FromPacketTraits; typedef typename internal::packet_traits::type Full; typedef typename internal::unpacket_traits::half Half; typedef typename internal::unpacket_traits::half>::half Quarter; static const int PacketSize = internal::unpacket_traits::size; static const bool CanCast = - PacketSize == internal::unpacket_traits::size || + FromPacketTraits::HasCast && + (PacketSize == internal::unpacket_traits::size || PacketSize == internal::unpacket_traits::size || - PacketSize == internal::unpacket_traits::size; + PacketSize == internal::unpacket_traits::size); - typedef typename internal::unpacket_traits::type FromScalar; typedef typename internal::conditional::size == PacketSize, Quarter, typename internal::conditional::size == PacketSize, Half, Full>::type>::type ToPacket;