@@ -442,40 +442,41 @@ namespace sugar{
442442
443443}
444444
445- template <int RTYPE,bool NA, typename T>
446- inline sugar::Plus_Vector_Primitive<RTYPE,NA,T>
445+
446+ template <int RTYPE,bool NA, typename T, typename U>
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
447448operator +(
448449 const VectorBase<RTYPE,NA,T>& lhs,
449- typename traits::storage_type<RTYPE>::type rhs
450+ const U & rhs
450451) {
451452 return sugar::Plus_Vector_Primitive<RTYPE,NA,T>( lhs, rhs ) ;
452453}
453454
454455
455- template <int RTYPE,bool NA, typename T>
456- inline sugar::Plus_Vector_Primitive< RTYPE , NA , T >
456+ template <int RTYPE,bool NA, typename T, typename U >
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
457458operator +(
458- typename traits::storage_type<RTYPE>::type rhs,
459+ const U & rhs,
459460 const VectorBase<RTYPE,NA,T>& lhs
460461) {
461462 return sugar::Plus_Vector_Primitive<RTYPE,NA, T >( lhs, rhs ) ;
462463}
463464
464465
465466
466- template <int RTYPE,bool NA, typename T>
467- inline sugar::Plus_Vector_Primitive_nona<RTYPE,NA,T>
467+ template <int RTYPE,bool NA, typename T, typename U >
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
468469operator +(
469470 const VectorBase<RTYPE,NA,T>& lhs,
470- typename sugar::NonaPrimitive< typename traits::storage_type<RTYPE>::type > rhs
471+ const typename sugar::NonaPrimitive< U > & rhs
471472) {
472473 return sugar::Plus_Vector_Primitive_nona<RTYPE,NA,T>( lhs, rhs ) ;
473474}
474475
475- template <int RTYPE,bool NA, typename T>
476- inline sugar::Plus_Vector_Primitive_nona< RTYPE , NA , T >
476+ template <int RTYPE,bool NA, typename T, typename U >
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
477478operator +(
478- typename sugar::NonaPrimitive< typename traits::storage_type<RTYPE>::type > rhs,
479+ const typename sugar::NonaPrimitive< U > & rhs,
479480 const VectorBase<RTYPE,NA,T>& lhs
480481) {
481482 return sugar::Plus_Vector_Primitive_nona<RTYPE,NA, T >( lhs, rhs ) ;
0 commit comments