Ticket #4441: enable_if_sfinae.2.patch
File enable_if_sfinae.2.patch, 2.7 KB (added by , 12 years ago) |
---|
-
matrix_expression.hpp
2940 2940 // (t * m) [i] [j] = t * m [i] [j] 2941 2941 template<class T1, class E2> 2942 2942 BOOST_UBLAS_INLINE 2943 typename enable_if< is_ convertible<T1, typename E2::value_type>,2943 typename enable_if< is_arithmetic<T1>, 2944 2944 typename matrix_binary_scalar1_traits<const T1, E2, scalar_multiplies<T1, typename E2::value_type> >::result_type 2945 2945 >::type 2946 2946 operator * (const T1 &e1, 2947 2947 const matrix_expression<E2> &e2) { 2948 2948 typedef typename matrix_binary_scalar1_traits<const T1, E2, scalar_multiplies<T1, typename E2::value_type> >::expression_type expression_type; 2949 2949 return expression_type (e1, e2 ()); … … 3375 3375 // (m * t) [i] [j] = m [i] [j] * t 3376 3376 template<class E1, class T2> 3377 3377 BOOST_UBLAS_INLINE 3378 typename enable_if< is_ convertible<T2, typename E1::value_type>,3378 typename enable_if< is_arithmetic<T2>, 3379 3379 typename matrix_binary_scalar2_traits<E1, const T2, scalar_multiplies<typename E1::value_type, T2> >::result_type 3380 3380 >::type 3381 3381 operator * (const matrix_expression<E1> &e1, 3382 3382 const T2 &e2) { 3383 3383 typedef typename matrix_binary_scalar2_traits<E1, const T2, scalar_multiplies<typename E1::value_type, T2> >::expression_type expression_type; 3384 3384 return expression_type (e1 (), e2); -
vector_expression.hpp
15 15 16 16 #include <boost/numeric/ublas/expression_types.hpp> 17 17 18 19 18 // Expression templates based on ideas of Todd Veldhuizen and Geoffrey Furnish 20 19 // Iterators based on ideas of Jeremy Siek 21 20 // … … 1170 1169 // (t * v) [i] = t * v [i] 1171 1170 template<class T1, class E2> 1172 1171 BOOST_UBLAS_INLINE 1173 typename enable_if< is_ convertible<T1, typename E2::value_type>,1172 typename enable_if< is_arithmetic<T1>, 1174 1173 typename vector_binary_scalar1_traits<const T1, E2, scalar_multiplies<T1, typename E2::value_type> >::result_type 1175 1174 >::type 1176 1175 operator * (const T1 &e1, … … 1397 1396 // (v * t) [i] = v [i] * t 1398 1397 template<class E1, class T2> 1399 1398 BOOST_UBLAS_INLINE 1400 typename enable_if< is_ convertible<T2, typename E1::value_type>,1399 typename enable_if< is_arithmetic<T2>, 1401 1400 typename vector_binary_scalar2_traits<E1, const T2, scalar_multiplies<typename E1::value_type, T2> >::result_type 1402 1401 >::type 1403 1402 operator * (const vector_expression<E1> &e1,