Skip to content

Commit 4c7dc3b

Browse files
committed
Refactor vec
1 parent 2447a76 commit 4c7dc3b

File tree

1 file changed

+8
-8
lines changed

1 file changed

+8
-8
lines changed

cp-algo/linalg/vector.hpp

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -16,10 +16,10 @@ namespace cp_algo::linalg {
1616

1717
valarray_base(base const& t): Base(t, 1) {}
1818

19-
auto begin() {return std::begin(static_cast<Base&>(*this));}
20-
auto end() {return std::end(static_cast<Base&>(*this));}
21-
auto begin() const {return std::begin(static_cast<Base const&>(*this));}
22-
auto end() const {return std::end(static_cast<Base const&>(*this));}
19+
auto begin() {return std::begin(to_valarray());}
20+
auto begin() const {return std::begin(to_valarray());}
21+
auto end() {return std::end(to_valarray());}
22+
auto end() const {return std::end(to_valarray());}
2323

2424
bool operator == (vec const& t) const {return std::ranges::equal(*this, t);}
2525
bool operator != (vec const& t) const {return !(*this == t);}
@@ -31,17 +31,17 @@ namespace cp_algo::linalg {
3131
std::ranges::copy(R, res.begin());
3232
return res;
3333
}
34+
Base& to_valarray() {return static_cast<Base&>(*this);}
35+
Base const& to_valarray() const {return static_cast<Base const&>(*this);}
3436
};
3537

3638
template<class vec, typename base>
3739
vec operator+(valarray_base<vec, base> const& a, valarray_base<vec, base> const& b) {
38-
return static_cast<std::valarray<base> const&>(a)
39-
+ static_cast<std::valarray<base> const&>(b);
40+
return a.to_valarray() + b.to_valarray();
4041
}
4142
template<class vec, typename base>
4243
vec operator-(valarray_base<vec, base> const& a, valarray_base<vec, base> const& b) {
43-
return static_cast<std::valarray<base> const&>(a)
44-
- static_cast<std::valarray<base> const&>(b);
44+
return a.to_valarray() - b.to_valarray();
4545
}
4646

4747
template<class vec, typename base>

0 commit comments

Comments
 (0)