Replace a static assert by a runtime one, fixes the build of unit tests on ARM

Also safely assert in the non-implemented path that should never be taken in practice,
and would return wrong results.
This commit is contained in:
Benoit Jacob 2015-02-27 10:01:59 -05:00
parent f074bb4b5f
commit b7fc8746e0
2 changed files with 6 additions and 4 deletions

View File

@ -290,7 +290,11 @@ template<typename Packet> EIGEN_DEVICE_FUNC inline Packet preverse(const Packet&
template<size_t offset, typename Packet>
struct protate_impl
{
static Packet run(const Packet& a) { return a; }
static Packet run(const Packet& a)
{
eigen_assert(false && "unimplemented");
return a;
}
};
/** \internal \returns a packet with the coefficients rotated to the right in little-endian convention,
@ -299,7 +303,6 @@ struct protate_impl
*/
template<size_t offset, typename Packet> EIGEN_DEVICE_FUNC inline Packet protate(const Packet& a)
{
EIGEN_STATIC_ASSERT(offset < unpacket_traits<Packet>::size, ROTATION_BY_ILLEGAL_OFFSET);
return offset ? protate_impl<offset, Packet>::run(a) : a;
}

View File

@ -93,8 +93,7 @@
THE_STORAGE_ORDER_OF_BOTH_SIDES_MUST_MATCH,
OBJECT_ALLOCATED_ON_STACK_IS_TOO_BIG,
IMPLICIT_CONVERSION_TO_SCALAR_IS_FOR_INNER_PRODUCT_ONLY,
STORAGE_LAYOUT_DOES_NOT_MATCH,
ROTATION_BY_ILLEGAL_OFFSET
STORAGE_LAYOUT_DOES_NOT_MATCH
};
};