@@ -435,23 +435,7 @@ template <class T, size_t S> class vector : public std::array<T, S>{
435435 * @return Reference to this vector object.
436436 */
437437 template <size_t SS> vector& operator -=(const vector<T, SS>& vec)noexcept {
438- if constexpr (SS >= S){
439- for (size_t i = 0 ; i != S; ++i){
440- this ->operator [](i) -= vec[i];
441- }
442- }else if constexpr (S < 4 || SS >= 4 ){
443- static_assert (SS < S, " " );
444- for (size_t i = 0 ; i != SS; ++i){
445- this ->operator [](i) -= vec[i];
446- }
447- }else {
448- static_assert (SS < 4 , " " );
449- static_assert (S >= 4 , " " );
450- for (size_t i = 0 ; i != SS; ++i){
451- this ->operator [](i) -= vec[i];
452- }
453- this ->operator [](3 ) -= T (1 );
454- }
438+ (*this ) += -vec;
455439 return *this ;
456440 }
457441
@@ -472,9 +456,7 @@ template <class T, size_t S> class vector : public std::array<T, S>{
472456 * @return Reference to this vector object.
473457 */
474458 vector& operator -=(T number)noexcept {
475- for (size_t i = 0 ; i != S; ++i){
476- this ->operator [](i) -= number;
477- }
459+ (*this ) += -number;
478460 return *this ;
479461 }
480462
@@ -547,9 +529,7 @@ template <class T, size_t S> class vector : public std::array<T, S>{
547529 */
548530 vector& operator /=(T num)noexcept {
549531 ASSERT_INFO (num != 0 , " vector::operator/=(): division by 0" )
550- for (auto & c : *this ){
551- c /= num;
552- }
532+ (*this ) *= T (1 )/num;
553533 return *this ;
554534 }
555535
0 commit comments