|
concept | add_assignable |
| Checks if the given type can be used in mutable plus operations.
|
|
concept | sub_assignable |
| Checks if the given type can be used in mutable minus operations.
|
|
concept | mul_assignable |
| Checks if the given type can be used in mutable multiplication operations.
|
|
concept | div_assignable |
| Checks if the given type can be used in mutable division operations.
|
|
concept | mod_assignable |
| Checks if the given type can be used in mutable modulo operations.
|
|
concept | addable |
| Checks if the given type can be used in immutable plus operations.
|
|
concept | subable |
| Checks if the given type can be used in immutable minus operations.
|
|
concept | mulable |
| Checks if the given type can be used in immutable multiplication operations.
|
|
concept | divable |
| Checks if the given type can be used in immutable division operations.
|
|
concept | modable |
| Checks if the given type can be used in immutable module operations.
|
|
concept | binary_invokable_with_all_overloads_implicit_convertible_to |
| Checks if binary operation has all four overloads (one for each parameter constellation) and if all of those overloads are implicitly convertible to the result type.
|
|
concept | value_type |
| Checks if the given type is regular and can be used in common arithmetically operations.
|
|
concept | vectorial |
| Concept checking for vectorial types.
|
|
|
template<std::ranges::input_range TRange, std::weakly_incrementable TOut, std::copy_constructible TUnaryOp> |
constexpr void | transform_unseq (TRange &&range, TOut result, TUnaryOp unaryOp) |
| Applies the given unary operation to each element and writes into result. More...
|
|
template<std::ranges::input_range TRange1, std::ranges::input_range TRange2, std::weakly_incrementable TOut, std::copy_constructible TBinaryOp> |
constexpr void | transform_unseq (TRange1 &&range1, TRange2 &&range2, TOut result, TBinaryOp binaryOp) |
| Applies the given unary operation to each element and writes into result. More...
|
|
template<std::ranges::input_range TRange, std::move_constructible T, std::copy_constructible TBinaryOp, std::copy_constructible TUnaryOp> |
constexpr T | transform_reduce_unseq (TRange &&range, T init, TBinaryOp binaryOp, TUnaryOp unaryOp) |
| Applies the unaryOp to each elements from the range and reduces the results (possibly permuted and aggregated unspecified manner) along with the initial value init over binaryOp. More...
|
|
template<std::ranges::input_range TRange1, std::ranges::input_range TRange2, std::move_constructible T, std::copy_constructible TBinaryOp1, std::copy_constructible TBinaryOp2> |
constexpr T | transform_reduce_unseq (TRange1 &&range1, TRange2 &&range2, T init, TBinaryOp1 binaryOp1, TBinaryOp2 binaryOp2) |
| Applies the binaryOp2 to each pair of elements from both ranges and reduces the results (possibly permuted and aggregated unspecified manner) along with the initial value init over binaryOp1. More...
|
|
template<class... T> |
| Vector (T &&...) -> Vector< std::common_type_t< T... >, sizeof...(T)> |
| Vector deduction guide to make aggregate-like construction easier. More...
|
|
template<vectorial TVector, add_assignable< TVector > T2> |
constexpr TVector | operator+ (TVector lhs, T2 &&rhs) |
| Sum operator. More...
|
|
template<vectorial TVector, sub_assignable< TVector > T2> |
constexpr TVector | operator- (TVector lhs, T2 &&rhs) |
| Minus operator. More...
|
|
template<vectorial TVector, mul_assignable< TVector > T2> |
constexpr TVector | operator* (TVector lhs, T2 &&rhs) |
| Multiplication operator. More...
|
|
template<vectorial TVector, mul_assignable< TVector > T2> |
constexpr TVector | operator* (T2 &&lhs, TVector rhs) |
| Commutative multiplication operator. More...
|
|
template<vectorial TVector, div_assignable< TVector > T2> |
constexpr TVector | operator/ (TVector lhs, T2 &&rhs) |
| Division operator. More...
|
|
template<vectorial TVector, mod_assignable< TVector > T2> |
constexpr TVector | operator% (TVector lhs, T2 &&rhs) |
| Modulo operator. More...
|
|
template<vectorial TVector1, vectorial TVector2>
requires mulable<vector_value_t<TVector2>, vector_value_t<TVector1>> |
constexpr vector_value_t< TVector1 > | dot_product (const TVector1 &lhs, const TVector2 &rhs) |
| Calculates the dot product of to Vectors. More...
|
|
template<vectorial TVector> |
constexpr vector_value_t< TVector > | length_squared (const TVector &vector) |
| Calculates the squared length of a Vector. More...
|
|
template<vectorial TVector> |
constexpr auto | length (const TVector &vector) |
| Calculates the length of a Vector. More...
|
|
template<vectorial TVector>
requires std::floating_point<vector_value_t<TVector>> |
constexpr TVector | normalized (TVector vec) |
| Calculates the normalization of a Vector. More...
|
|
template<vectorial TVector> |
constexpr TVector | projected (const TVector &vector, TVector target) |
| Projects vector onto the target Vector. More...
|
|
template<vectorial TVector, class T >
requires std::is_arithmetic_v<T> |
constexpr TVector | lerp (TVector vector1, const TVector &vector2, T t) |
| Computes the linear interpolation between both vectors for the parameter t (or extrapolation, when t is outside the range [0,1]). More...
|
|
template<vectorial TVector>
requires std::floating_point<vector_value_t<TVector>> |
constexpr TVector | inversed (TVector vector) |
| Computes the inverse of the vector (1./v[0], 1./v[1], ...). More...
|
|