@@ -435,23 +435,7 @@ template <class T, size_t S> class vector : public std::array<T, S>{
435
435
* @return Reference to this vector object.
436
436
*/
437
437
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;
455
439
return *this ;
456
440
}
457
441
@@ -472,9 +456,7 @@ template <class T, size_t S> class vector : public std::array<T, S>{
472
456
* @return Reference to this vector object.
473
457
*/
474
458
vector& operator -=(T number)noexcept {
475
- for (size_t i = 0 ; i != S; ++i){
476
- this ->operator [](i) -= number;
477
- }
459
+ (*this ) += -number;
478
460
return *this ;
479
461
}
480
462
@@ -547,9 +529,7 @@ template <class T, size_t S> class vector : public std::array<T, S>{
547
529
*/
548
530
vector& operator /=(T num)noexcept {
549
531
ASSERT_INFO (num != 0 , " vector::operator/=(): division by 0" )
550
- for (auto & c : *this ){
551
- c /= num;
552
- }
532
+ (*this ) *= T (1 )/num;
553
533
return *this ;
554
534
}
555
535
0 commit comments