Index: matrix_expression.hpp =================================================================== --- matrix_expression.hpp (revision 64061) +++ matrix_expression.hpp (working copy) @@ -2940,9 +2940,7 @@ // (t * m) [i] [j] = t * m [i] [j] template BOOST_UBLAS_INLINE - typename enable_if< is_convertible, - typename matrix_binary_scalar1_traits >::result_type - >::type + typename matrix_binary_scalar1_traits::value, T1>::type, E2, scalar_multiplies >::result_type operator * (const T1 &e1, const matrix_expression &e2) { typedef typename matrix_binary_scalar1_traits >::expression_type expression_type; @@ -3375,9 +3373,7 @@ // (m * t) [i] [j] = m [i] [j] * t template BOOST_UBLAS_INLINE - typename enable_if< is_convertible, - typename matrix_binary_scalar2_traits >::result_type - >::type + typename matrix_binary_scalar2_traits::value, T2>::type, scalar_multiplies >::result_type operator * (const matrix_expression &e1, const T2 &e2) { typedef typename matrix_binary_scalar2_traits >::expression_type expression_type; Index: vector_expression.hpp =================================================================== --- vector_expression.hpp (revision 64061) +++ vector_expression.hpp (working copy) @@ -15,7 +15,6 @@ #include - // Expression templates based on ideas of Todd Veldhuizen and Geoffrey Furnish // Iterators based on ideas of Jeremy Siek // @@ -1170,9 +1169,9 @@ // (t * v) [i] = t * v [i] template BOOST_UBLAS_INLINE - typename enable_if< is_convertible, - typename vector_binary_scalar1_traits >::result_type - >::type + typename vector_binary_scalar1_traits< const typename boost::enable_if_c::value, T1>::type, + E2, + scalar_multiplies >::result_type operator * (const T1 &e1, const vector_expression &e2) { typedef typename vector_binary_scalar1_traits >::expression_type expression_type; @@ -1397,9 +1396,7 @@ // (v * t) [i] = v [i] * t template BOOST_UBLAS_INLINE - typename enable_if< is_convertible, - typename vector_binary_scalar2_traits >::result_type - >::type + typename vector_binary_scalar2_traits::value, T2>::type, scalar_multiplies >::result_type operator * (const vector_expression &e1, const T2 &e2) { typedef typename vector_binary_scalar2_traits >::expression_type expression_type;