@@ -424,40 +424,40 @@ namespace sugar{
424424
425425}
426426
427- template <int RTYPE,bool NA, typename T>
428- inline sugar::Times_Vector_Primitive<RTYPE,NA,T>
427+ template <int RTYPE,bool NA, typename T, typename U >
428+ inline typename traits::enable_if< traits::is_primitive< typename traits::remove_const_and_reference<U>::type >::value, sugar::Times_Vector_Primitive<RTYPE,NA,T> >::type
429429operator *(
430430 const VectorBase<RTYPE,NA,T>& lhs,
431- typename traits::storage_type<RTYPE>::type rhs
431+ U rhs
432432) {
433433 return sugar::Times_Vector_Primitive<RTYPE,NA,T>( lhs, rhs ) ;
434434}
435435
436436
437- template <int RTYPE,bool NA, typename T>
438- inline sugar::Times_Vector_Primitive< RTYPE , NA , T >
437+ template <int RTYPE,bool NA, typename T, typename U >
438+ inline typename traits::enable_if< traits::is_primitive< typename traits::remove_const_and_reference<U>::type >::value, sugar::Times_Vector_Primitive< RTYPE , NA , T > >::type
439439operator *(
440- typename traits::storage_type<RTYPE>::type rhs,
440+ U rhs,
441441 const VectorBase<RTYPE,NA,T>& lhs
442442) {
443443 return sugar::Times_Vector_Primitive<RTYPE,NA, T >( lhs, rhs ) ;
444444}
445445
446446
447447
448- template <int RTYPE,bool NA, typename T>
449- inline sugar::Times_Vector_Primitive_nona<RTYPE,NA,T>
448+ template <int RTYPE,bool NA, typename T, typename U >
449+ inline typename traits::enable_if< traits::is_primitive< typename traits::remove_const_and_reference<U>::type >::value, sugar::Times_Vector_Primitive_nona<RTYPE,NA,T> >::type
450450operator *(
451451 const VectorBase<RTYPE,NA,T>& lhs,
452- typename sugar::NonaPrimitive< typename traits::storage_type<RTYPE>::type > rhs
452+ typename sugar::NonaPrimitive< U > rhs
453453) {
454454 return sugar::Times_Vector_Primitive_nona<RTYPE,NA,T>( lhs, rhs ) ;
455455}
456456
457- template <int RTYPE,bool NA, typename T>
458- inline sugar::Times_Vector_Primitive_nona< RTYPE , NA , T >
457+ template <int RTYPE,bool NA, typename T, typename U >
458+ inline typename traits::enable_if< traits::is_primitive< typename traits::remove_const_and_reference<U>::type >::value, sugar::Times_Vector_Primitive_nona< RTYPE , NA , T > >::type
459459operator *(
460- typename sugar::NonaPrimitive< typename traits::storage_type<RTYPE>::type > rhs,
460+ typename sugar::NonaPrimitive< U > rhs,
461461 const VectorBase<RTYPE,NA,T>& lhs
462462) {
463463 return sugar::Times_Vector_Primitive_nona<RTYPE,NA, T >( lhs, rhs ) ;
0 commit comments