Introduce a NumTraits<T>::Literal type to be used for literals, and

improve mixing type support in operations between arrays and scalars:
 - 2 * ArrayXcf is now optimized in the sense that the integer 2 is properly promoted to a float instead of a complex<float> (fix a regression)
 - 2.1 * ArrayXi is now forbiden (previously, 2.1 was converted to 2)
 - This mechanism should be applicable to any custom scalar type, assuming NumTraits<T>::Literal is properly defined (it defaults to T)
This commit is contained in:
Gael Guennebaud
2016-06-23 14:27:20 +02:00
parent 67c12531e5
commit 76faf4a965
5 changed files with 51 additions and 27 deletions

View File

@@ -75,8 +75,8 @@ template <typename MatrixType> void run_nesting_ops_2(const MatrixType& _m)
}
else
{
VERIFY( verify_eval_type<1>(2*m1, 2*m1) );
VERIFY( verify_eval_type<2>(2*m1, m1) );
VERIFY( verify_eval_type<2>(2*m1, 2*m1) );
VERIFY( verify_eval_type<3>(2*m1, m1) );
}
VERIFY( verify_eval_type<2>(m1+m1, m1+m1) );
VERIFY( verify_eval_type<3>(m1+m1, m1) );