@@ -444,19 +444,19 @@ namespace sugar{
444444
445445
446446template <int RTYPE,bool NA, typename T, typename U>
447- inline typename traits::enable_if< traits::is_primitive< typename traits::remove_const_and_reference<U>::type >::value, typename sugar::Plus_Vector_Primitive<RTYPE,NA,T> >::type
447+ inline typename traits::enable_if<traits::is_convertible< typename traits::remove_const_and_reference<U>::type, typename traits::storage_type<RTYPE>::type >::value, typename sugar::Plus_Vector_Primitive<RTYPE,NA,T> >::type
448448operator +(
449449 const VectorBase<RTYPE,NA,T>& lhs,
450- U rhs
450+ const U & rhs
451451) {
452452 return sugar::Plus_Vector_Primitive<RTYPE,NA,T>( lhs, rhs ) ;
453453}
454454
455455
456456template <int RTYPE,bool NA, typename T, typename U>
457- inline typename traits::enable_if< traits::is_primitive< typename traits::remove_const_and_reference<U>::type >::value, typename sugar::Plus_Vector_Primitive< RTYPE , NA , T > >::type
457+ inline typename traits::enable_if<traits::is_convertible< typename traits::remove_const_and_reference<U>::type, typename traits::storage_type<RTYPE >::type>:: value, typename sugar::Plus_Vector_Primitive< RTYPE , NA , T> >::type
458458operator +(
459- U rhs,
459+ const U & rhs,
460460 const VectorBase<RTYPE,NA,T>& lhs
461461) {
462462 return sugar::Plus_Vector_Primitive<RTYPE,NA, T >( lhs, rhs ) ;
@@ -465,18 +465,18 @@ operator+(
465465
466466
467467template <int RTYPE,bool NA, typename T, typename U>
468- inline typename traits::enable_if< traits::is_primitive< typename traits::remove_const_and_reference<U>::type >::value, sugar::Plus_Vector_Primitive_nona<RTYPE,NA,T> >::type
468+ inline typename traits::enable_if<traits::is_convertible< typename traits::remove_const_and_reference<U>::type, typename traits::storage_type<RTYPE>::type >::value, sugar::Plus_Vector_Primitive_nona<RTYPE,NA,T> >::type
469469operator +(
470470 const VectorBase<RTYPE,NA,T>& lhs,
471- typename sugar::NonaPrimitive< U > rhs
471+ const typename sugar::NonaPrimitive< U > & rhs
472472) {
473473 return sugar::Plus_Vector_Primitive_nona<RTYPE,NA,T>( lhs, rhs ) ;
474474}
475475
476476template <int RTYPE,bool NA, typename T, typename U>
477- inline typename traits::enable_if< traits::is_primitive< typename traits::remove_const_and_reference<U>::type >::value, sugar::Plus_Vector_Primitive_nona< RTYPE , NA , T > >::type
477+ inline typename traits::enable_if<traits::is_convertible< typename traits::remove_const_and_reference<U>::type, typename traits::storage_type<RTYPE >::type>:: value, sugar::Plus_Vector_Primitive_nona< RTYPE , NA , T> >::type
478478operator +(
479- typename sugar::NonaPrimitive< U > rhs,
479+ const typename sugar::NonaPrimitive< U > & rhs,
480480 const VectorBase<RTYPE,NA,T>& lhs
481481) {
482482 return sugar::Plus_Vector_Primitive_nona<RTYPE,NA, T >( lhs, rhs ) ;
0 commit comments