@@ -506,64 +506,64 @@ KFR_INTRINSIC expression_make_function<fn::satsub, E1, E2> satsub(E1&& x, E2&& y
506506}
507507
508508template <input_output_expression E1 , input_expression E2 >
509- KFR_INTRINSIC E1 & operator +=(E1 && e1 , E2 && e2 )
509+ KFR_INTRINSIC std:: remove_reference_t < E1 > operator +=(E1 && e1 , E2 && e2 )
510510{
511511 process (e1 , operator +(e1 , e2 ));
512- return e1 ;
512+ return std::forward< E1 >( e1 ) ;
513513}
514514template <input_output_expression E1 , input_expression E2 >
515- KFR_INTRINSIC E1 & operator -=(E1 && e1 , E2 && e2 )
515+ KFR_INTRINSIC std:: remove_reference_t < E1 > operator -=(E1 && e1 , E2 && e2 )
516516{
517517 process (e1 , operator -(e1 , e2 ));
518- return e1 ;
518+ return std::forward< E1 >( e1 ) ;
519519}
520520template <input_output_expression E1 , input_expression E2 >
521- KFR_INTRINSIC E1 & operator *=(E1 && e1 , E2 && e2 )
521+ KFR_INTRINSIC std:: remove_reference_t < E1 > operator *=(E1 && e1 , E2 && e2 )
522522{
523523 process (e1 , operator *(e1 , e2 ));
524- return e1 ;
524+ return std::forward< E1 >( e1 ) ;
525525}
526526template <input_output_expression E1 , input_expression E2 >
527- KFR_INTRINSIC E1 & operator /=(E1 && e1 , E2 && e2 )
527+ KFR_INTRINSIC std:: remove_reference_t < E1 > operator /=(E1 && e1 , E2 && e2 )
528528{
529529 process (e1 , operator /(e1 , e2 ));
530- return e1 ;
530+ return std::forward< E1 >( e1 ) ;
531531}
532532template <input_output_expression E1 , input_expression E2 >
533- KFR_INTRINSIC E1 & operator %=(E1 && e1 , E2 && e2 )
533+ KFR_INTRINSIC std:: remove_reference_t < E1 > operator %=(E1 && e1 , E2 && e2 )
534534{
535535 process (e1 , operator %(e1 , e2 ));
536- return e1 ;
536+ return std::forward< E1 >( e1 ) ;
537537}
538538template <input_output_expression E1 , input_expression E2 >
539- KFR_INTRINSIC E1 & operator |=(E1 && e1 , E2 && e2 )
539+ KFR_INTRINSIC std:: remove_reference_t < E1 > operator |=(E1 && e1 , E2 && e2 )
540540{
541541 process (e1 , operator |(e1 , e2 ));
542- return e1 ;
542+ return std::forward< E1 >( e1 ) ;
543543}
544544template <input_output_expression E1 , input_expression E2 >
545- KFR_INTRINSIC E1 & operator &=(E1 && e1 , E2 && e2 )
545+ KFR_INTRINSIC std:: remove_reference_t < E1 > operator &=(E1 && e1 , E2 && e2 )
546546{
547547 process (e1 , operator &(e1 , e2 ));
548- return e1 ;
548+ return std::forward< E1 >( e1 ) ;
549549}
550550template <input_output_expression E1 , input_expression E2 >
551- KFR_INTRINSIC E1 & operator ^=(E1 && e1 , E2 && e2 )
551+ KFR_INTRINSIC std:: remove_reference_t < E1 > operator ^=(E1 && e1 , E2 && e2 )
552552{
553553 process (e1 , operator ^(e1 , e2 ));
554- return e1 ;
554+ return std::forward< E1 >( e1 ) ;
555555}
556556template <input_output_expression E1 , input_expression E2 >
557- KFR_INTRINSIC E1 & operator <<=(E1 && e1 , E2 && e2 )
557+ KFR_INTRINSIC std:: remove_reference_t < E1 > operator <<=(E1 && e1 , E2 && e2 )
558558{
559559 process (e1 , operator <<(e1 , e2 ));
560- return e1 ;
560+ return std::forward< E1 >( e1 ) ;
561561}
562562template <input_output_expression E1 , input_expression E2 >
563- KFR_INTRINSIC E1 & operator >>=(E1 && e1 , E2 && e2 )
563+ KFR_INTRINSIC std:: remove_reference_t < E1 > operator >>=(E1 && e1 , E2 && e2 )
564564{
565565 process (e1 , operator >>(e1 , e2 ));
566- return e1 ;
566+ return std::forward< E1 >( e1 ) ;
567567}
568568
569569} // namespace KFR_ARCH_NAME
0 commit comments