template<typename T1, typename T2 = T1>
numeric::Vector2 class

Vector2.

Constructors, destructors, conversion operators

Vector2() constexpr
Construct a new Vector2 object.
Vector2(T1&& x, T2&& y) constexpr noexcept
Construct a new Vector2 object.
Vector2(const T1& x, const T2& y) constexpr
Construct a new Vector2 object.
template<typename U1, typename U2>
Vector2(const Vector2<U1, U2>& other) explicit constexpr
Construct a new Vector2 object.

Public functions

auto x() const noexcept -> const T1 & -> auto constexpr
auto y() const noexcept -> const T2 & -> auto constexpr
template<typename U1, typename U2>
auto dot(const Vector2<U1, U2>& other) const -> double -> auto constexpr
template<typename U1, typename U2>
auto cross(const Vector2<U1, U2>& other) const -> double -> auto constexpr

Public variables

T1 _x
T2 _y

Arithmetic operators

definie +, -, *, /, +=, -=, *=, /=, etc.

auto operator-() const -> Vector2< T1, T2 > -> auto constexpr
Negate.
template<typename U1, typename U2>
auto operator+=(const Vector2<U1, U2>& other) -> Vector2< T1, T2 > & -> CONSTEXPR14 auto
Add.
template<typename U1, typename U2>
auto operator-=(const Vector2<U1, U2>& other) -> Vector2< T1, T2 > & -> CONSTEXPR14 auto
Substract.
template<typename R>
auto operator*=(const R& alpha) -> Vector2< T1, T2 > & -> CONSTEXPR14 auto
Multiply.
template<typename R>
auto operator/=(const R& alpha) -> Vector2< T1, T2 > & -> CONSTEXPR14 auto
Divide.
template<typename U1, typename U2>
auto operator+(Vector2<T1, T2> x, const Vector2<U1, U2>& y) -> Vector2< T1, T2 > -> auto constexpr
Add.
template<typename U1, typename U2>
auto operator-(Vector2<T1, T2> x, const Vector2<U1, U2>& y) -> Vector2< T1, T2 > -> auto constexpr
Substract.
template<typename R>
auto operator*(Vector2<T1, T2> x, const R& alpha) -> Vector2< T1, T2 > -> auto constexpr
Multiply by a scalar.
template<typename R>
auto operator*(const R& alpha, Vector2<T1, T2> x) -> Vector2< T1, T2 > -> auto constexpr
Multiply (by a scalar)
template<typename R>
auto operator/(Vector2<T1, T2> x, const R& alpha) -> Vector2< T1, T2 > -> auto constexpr
Divide (by a scalar)

Friends

template<class Stream>
auto operator<<(Stream& out, const Vector2<T1, T2>& v) -> Stream & -> auto

Function documentation

template<typename T1, typename T2>
numeric::Vector2<T1, T2>::Vector2(T1&& x, T2&& y) constexpr noexcept

Construct a new Vector2 object.

Parameters
x
y

template<typename T1, typename T2>
numeric::Vector2<T1, T2>::Vector2(const T1& x, const T2& y) constexpr

Construct a new Vector2 object.

Parameters
x
y

template<typename T1, typename T2> template<typename U1, typename U2>
numeric::Vector2<T1, T2>::Vector2(const Vector2<U1, U2>& other) explicit constexpr

Construct a new Vector2 object.

Template parameters
U1
U2

template<typename T1, typename T2>
auto numeric::Vector2<T1, T2>::x() const noexcept -> const T1 & constexpr

Returns constexpr const T1&

template<typename T1, typename T2>
auto numeric::Vector2<T1, T2>::y() const noexcept -> const T2 & constexpr

Returns constexpr const T2&

template<typename T1, typename T2> template<typename U1, typename U2>
auto numeric::Vector2<T1, T2>::dot(const Vector2<U1, U2>& other) const -> double constexpr

Template parameters
U1
U2
Parameters
other in
Returns constexpr auto

template<typename T1, typename T2> template<typename U1, typename U2>
auto numeric::Vector2<T1, T2>::cross(const Vector2<U1, U2>& other) const -> double constexpr

Template parameters
U1
U2
Parameters
other in
Returns constexpr auto

template<typename T1, typename T2>
auto numeric::Vector2<T1, T2>::operator-() const -> Vector2< T1, T2 > constexpr

Negate.

Returns Vector2

template<typename T1, typename T2> template<typename U1, typename U2>
CONSTEXPR14 auto numeric::Vector2<T1, T2>::operator+=(const Vector2<U1, U2>& other) -> Vector2< T1, T2 > &

Add.

Template parameters
U1
U2
Parameters
other in
Returns Vector2&

template<typename T1, typename T2> template<typename U1, typename U2>
CONSTEXPR14 auto numeric::Vector2<T1, T2>::operator-=(const Vector2<U1, U2>& other) -> Vector2< T1, T2 > &

Substract.

Template parameters
U1
U2
Parameters
other in
Returns Vector2&

template<typename T1, typename T2> template<typename R>
CONSTEXPR14 auto numeric::Vector2<T1, T2>::operator*=(const R& alpha) -> Vector2< T1, T2 > &

Multiply.

Template parameters
R
Parameters
alpha in
Returns Vector2&

template<typename T1, typename T2> template<typename R>
CONSTEXPR14 auto numeric::Vector2<T1, T2>::operator/=(const R& alpha) -> Vector2< T1, T2 > &

Divide.

Template parameters
R
Parameters
alpha in
Returns Vector2&

template<typename T1, typename T2> template<typename U1, typename U2>
auto numeric::Vector2<T1, T2>::operator+(Vector2<T1, T2> x, const Vector2<U1, U2>& y) -> Vector2< T1, T2 > constexpr

Add.

Template parameters
U1
U2
Parameters
in
in
Returns Vector2

template<typename T1, typename T2> template<typename U1, typename U2>
auto numeric::Vector2<T1, T2>::operator-(Vector2<T1, T2> x, const Vector2<U1, U2>& y) -> Vector2< T1, T2 > constexpr

Substract.

Template parameters
U1
U2
Parameters
in
in
Returns Vector2

template<typename T1, typename T2> template<typename R>
auto numeric::Vector2<T1, T2>::operator*(Vector2<T1, T2> x, const R& alpha) -> Vector2< T1, T2 > constexpr

Multiply by a scalar.

Template parameters
R
Parameters
in
alpha in
Returns Vector2

template<typename T1, typename T2> template<typename R>
auto numeric::Vector2<T1, T2>::operator*(const R& alpha, Vector2<T1, T2> x) -> Vector2< T1, T2 > constexpr

Multiply (by a scalar)

Template parameters
R
Parameters
alpha in
in
Returns Vector2

template<typename T1, typename T2> template<typename R>
auto numeric::Vector2<T1, T2>::operator/(Vector2<T1, T2> x, const R& alpha) -> Vector2< T1, T2 > constexpr

Divide (by a scalar)

Template parameters
R
Parameters
in
alpha in
Returns Vector2

template<typename T1, typename T2> template<class Stream>
auto operator<<(Stream& out, const Vector2<T1, T2>& v) -> Stream &

Template parameters
Stream
Parameters
out out
in
Returns Stream&