fennec
Loading...
Searching...
No Matches
fennec::vector< ScalarT, IndicesV >

Math Vector Type. More...

#include <vector.h>

Inherits detail::vector_base_type< ScalarT, sizeof...(IndicesV)>.

Detailed Description

template<typename ScalarT, size_t... IndicesV>
requires (is_scalar_v<ScalarT>)
struct fennec::vector< ScalarT, IndicesV >
Template Parameters
ScalarTbase scalar type of each Component
IndicesVindex of each Component

Forward Definitions & Constants

using base_type = detail::vector_base_type< ScalarT, sizeof...(IndicesV)>
 vector base type
 
using scalar_t = ScalarT
 alias for ScalarT
 
using vector_t = vector
 alias for this type
 
using decay_t = conditional_t< N==1, scalar_t, vector_t >
 Type that the vector should Decay into.
 
static constexpr size_t dimension = sizeof...(IndicesV)
 dimension of the swizzle
 
static constexpr size_t num_components = sizeof...(IndicesV)
 number of components
 
static constexpr size_t size = sizeof...(IndicesV)
 size of the swizzle
 
static constexpr size_t N = sizeof...(IndicesV)
 size of the swizzle
 

Constructors

constexpr vector ()
 default constructor, initializes components with 0
 
constexpr vector (const vector_t &x)
 copy constructor
 
constexpr vector (vector_t &&x) noexcept
 move constructor
 
constexpr vector (scalar_t s)
 scalar constructor
 
constexpr vector (int_t s)
 int conversion scalar
 
constexpr vector (double_t s)
 double conversion scalar
 
template<typename OScalarT , size_t MoreIndicesStartV, size_t... MoreIndicesV>
constexpr vector (const vector< OScalarT, IndicesV..., MoreIndicesStartV, MoreIndicesV... > &v)
 vector conversion constructor
 
template<typename SwizzleDataT , typename SwizzleScalarT , size_t... SwizzleIndicesV>
constexpr vector (const detail::swizzle_storage< SwizzleDataT, SwizzleScalarT, SwizzleIndicesV... > &swizzle)
 swizzle conversion constructor
 
template<typename... ArgsT>
requires (total_component_count_v<ArgsT...> == N)
constexpr vector (ArgsT &&... args)
 piecewise constructor
 

Public Member Functions

decay_t decay ()
 decay implementation
 

Access operators

constexpr scalar_toperator[] (size_t i)
 
constexpr scalar_t operator[] (size_t i) const
 indexed access operator
 

Assignment operators

constexpr vector_toperator= (const vector_t &rhs)
 copy assignment
 
constexpr vector_toperator= (vector_t &&rhs) noexcept
 move assignment
 

Comparison Operators

constexpr bool_t operator== (const vector_t &rhs) const
 vector equality operator
 
constexpr bool_t operator!= (const vector_t &rhs) const
 vector inequality operator
 

\ref fennec_math_scalar "scalar" - \ref fennec_math_vector "vector" Arithmetic operators

constexpr friend vector_t operator+ (scalar_t lhs, const vector_t &rhs)
 scalar - vector addition operator
 
constexpr friend vector_t operator- (scalar_t lhs, const vector_t &rhs)
 scalar - vector subtraction operator
 
constexpr friend vector_t operator* (scalar_t lhs, const vector_t &rhs)
 scalar - vector multiplication operator
 
constexpr friend vector_t operator/ (scalar_t lhs, const vector_t &rhs)
 scalar - vector division operator
 
constexpr friend vector_t operator% (scalar_t lhs, const vector_t &rhs)
 scalar - vector integer modulus operator
 

\ref fennec_math_vector "vector" - \ref fennec_math_scalar "scalar" Arithmetic operators

constexpr friend vector_t operator+ (const vector_t &lhs, scalar_t rhs)
 vector - scalar addition operator
 
constexpr friend vector_t operator- (const vector_t &lhs, scalar_t rhs)
 vector - scalar subtraction operator
 
constexpr friend vector_t operator* (const vector_t &lhs, scalar_t rhs)
 vector - scalar multiplication operator
 
constexpr friend vector_t operator/ (const vector_t &lhs, scalar_t rhs)
 vector - scalar division operator
 
constexpr friend vector_t operator% (const vector_t &lhs, scalar_t rhs)
 vector - scalar integer modulus operator
 

\ref fennec_math_vector "vector" - \ref fennec_math_scalar "scalar" Arithmetic Assignment operators

constexpr friend vector_toperator+= (vector_t &lhs, scalar_t rhs)
 vector - scalar addition operator
 
constexpr friend vector_toperator-= (vector_t &lhs, scalar_t rhs)
 vector - scalar Subtraction operator
 
constexpr friend vector_toperator*= (vector_t &lhs, scalar_t rhs)
 vector - scalar multiplication operator
 
constexpr friend vector_toperator/= (vector_t &lhs, scalar_t rhs)
 vector - scalar division operator
 
constexpr friend vector_toperator%= (vector_t &lhs, scalar_t rhs)
 vector - scalar integer modulus operator
 

\ref fennec_math_vector "vector" - \ref fennec_math_vector "vector" Arithmetic operators

constexpr friend vector_t operator- (const vector_t &x)
 negation operator
 
constexpr friend vector_t operator+ (const vector_t &lhs, const vector_t &rhs)
 vector - vector addition operator
 
constexpr friend vector_t operator- (const vector_t &lhs, const vector_t &rhs)
 vector - vector subtraction operator
 
constexpr friend vector_t operator* (const vector_t &lhs, const vector_t &rhs)
 vector - vector multiplication operator
 
constexpr friend vector_t operator/ (const vector_t &lhs, const vector_t &rhs)
 vector - vector division operator
 
constexpr friend vector_t operator% (const vector_t &lhs, const vector_t &rhs)
 vector - vector integer modulus operator
 

\ref fennec_math_vector "vector" - \ref fennec_math_vector "vector" Arithmetic Assignment operators

constexpr friend vector_toperator+= (vector_t &lhs, const vector_t &rhs)
 vector - vector addition operator
 
constexpr friend vector_toperator-= (vector_t &lhs, const vector_t &rhs)
 vector - vector subtraction operator
 
constexpr friend vector_toperator*= (vector_t &lhs, const vector_t &rhs)
 vector - vector multiplication operator
 
constexpr friend vector_toperator/= (vector_t &lhs, const vector_t &rhs)
 vector - vector division operator
 
constexpr friend vector_toperator%= (vector_t &lhs, const vector_t &rhs)
 vector - vector integer modulus operator
 

Boolean Operators

constexpr friend vector_t operator! (const vector_t &x)
 unary boolean not operator
 
constexpr friend vector_t operator&& (const vector_t &lhs, scalar_t rhs)
 vector - scalar logical and operator
 
constexpr friend vector_t operator&& (const vector_t &lhs, const vector_t &rhs)
 vector - vector logical and operator
 
constexpr friend vector_t operator|| (const vector_t &lhs, scalar_t rhs)
 vector - scalar logical or operator
 
constexpr friend vector_t operator|| (const vector_t &lhs, const vector_t &rhs)
 vector - vector logical or operator
 

Bitwise Operators

constexpr friend vector_t operator& (scalar_t rhs, const vector_t &lhs)
 scalar - vector bitwise and operator
 
constexpr friend vector_t operator& (const vector_t &lhs, scalar_t rhs)
 vector - scalar bitwise and operator
 
constexpr friend vector_t operator&= (vector_t &lhs, scalar_t rhs)
 vector - scalar bitwise and assignment operator
 
constexpr friend vector_t operator& (const vector_t &lhs, const vector_t &rhs)
 vector - vector bitwise and operator
 
constexpr friend vector_t operator&= (vector_t &lhs, const vector_t &rhs)
 vector - vector bitwise and assignment operator
 
constexpr friend vector_t operator| (scalar_t rhs, const vector_t &lhs)
 scalar - vector bitwise or operator
 
constexpr friend vector_t operator| (const vector_t &lhs, scalar_t rhs)
 vector - scalar bitwise or operator
 
constexpr friend vector_t operator|= (vector_t &lhs, scalar_t rhs)
 vector - scalar bitwise or assignment operator
 
constexpr friend vector_t operator| (const vector_t &lhs, const vector_t &rhs)
 vector - vector bitwise or operator
 
constexpr friend vector_t operator|= (vector_t &lhs, const vector_t &rhs)
 vector - vector bitwise or assignment operator
 
constexpr friend vector_t operator^ (scalar_t lhs, const vector_t &rhs)
 
constexpr friend vector_t operator^ (const vector_t &lhs, scalar_t rhs)
 
constexpr friend vector_t operator^= (vector_t &lhs, scalar_t rhs)
 
constexpr friend vector_t operator^ (const vector_t &lhs, const vector_t &rhs)
 
constexpr friend vector_t operator^= (vector_t &lhs, const vector_t &rhs)
 
constexpr friend vector_t operator<< (scalar_t lhs, const vector_t &rhs)
 
constexpr friend vector_t operator<< (const vector_t &lhs, scalar_t rhs)
 
constexpr friend vector_t operator<<= (vector_t &lhs, scalar_t rhs)
 
constexpr friend vector_t operator<< (const vector_t &lhs, const vector_t &rhs)
 
constexpr friend vector_t operator<<= (vector_t &lhs, const vector_t &rhs)
 
constexpr friend vector_t operator>> (scalar_t lhs, const vector_t &rhs)
 
constexpr friend vector_t operator>> (const vector_t &lhs, scalar_t rhs)
 
constexpr friend vector_t operator>>= (vector_t &lhs, scalar_t rhs)
 
constexpr friend vector_t operator>> (const vector_t &lhs, const vector_t &rhs)
 
constexpr friend vector_t operator>>= (vector_t &lhs, const vector_t &rhs)
 

Constructor & Destructor Documentation

◆ vector() [1/9]

template<typename ScalarT , size_t... IndicesV>
constexpr fennec::vector< ScalarT, IndicesV >::vector ( )
inlineconstexpr

** **

◆ vector() [2/9]

template<typename ScalarT , size_t... IndicesV>
constexpr fennec::vector< ScalarT, IndicesV >::vector ( const vector_t x)
inlineconstexpr
Parameters
xobject to copy

◆ vector() [3/9]

template<typename ScalarT , size_t... IndicesV>
constexpr fennec::vector< ScalarT, IndicesV >::vector ( vector_t &&  x)
inlineconstexprnoexcept
Parameters
xobject to move

◆ vector() [4/9]

template<typename ScalarT , size_t... IndicesV>
constexpr fennec::vector< ScalarT, IndicesV >::vector ( scalar_t  s)
inlineexplicitconstexpr
Parameters
sscalar value to initialize with

◆ vector() [5/9]

template<typename ScalarT , size_t... IndicesV>
constexpr fennec::vector< ScalarT, IndicesV >::vector ( int_t  s)
inlineexplicitconstexpr
Parameters
sscalar value to initialize with

◆ vector() [6/9]

template<typename ScalarT , size_t... IndicesV>
constexpr fennec::vector< ScalarT, IndicesV >::vector ( double_t  s)
inlineexplicitconstexpr
Parameters
sscalar value to initialize with

◆ vector() [7/9]

template<typename ScalarT , size_t... IndicesV>
template<typename OScalarT , size_t MoreIndicesStartV, size_t... MoreIndicesV>
constexpr fennec::vector< ScalarT, IndicesV >::vector ( const vector< OScalarT, IndicesV..., MoreIndicesStartV, MoreIndicesV... > &  v)
inlineexplicitconstexpr
Template Parameters
OScalarTscalar Type of the vector to Convert
MoreIndicesStartV
MoreIndicesV
Parameters
v

◆ vector() [8/9]

template<typename ScalarT , size_t... IndicesV>
template<typename SwizzleDataT , typename SwizzleScalarT , size_t... SwizzleIndicesV>
constexpr fennec::vector< ScalarT, IndicesV >::vector ( const detail::swizzle_storage< SwizzleDataT, SwizzleScalarT, SwizzleIndicesV... > &  swizzle)
inlineexplicitconstexpr
Template Parameters
SwizzleDataTswizzle Data Type
SwizzleScalarTswizzle scalar Type
SwizzleIndicesVswizzle Indices
Parameters
swizzleswizzle object

◆ vector() [9/9]

template<typename ScalarT , size_t... IndicesV>
template<typename... ArgsT>
requires (total_component_count_v<ArgsT...> == N)
constexpr fennec::vector< ScalarT, IndicesV >::vector ( ArgsT &&...  args)
inlineexplicitconstexpr

constructs a vector from a series of scalars, swizzles, and vectors

Template Parameters
ArgsTargument types
Parameters
argsarguments

Member Function Documentation

◆ decay()

template<typename ScalarT , size_t... IndicesV>
decay_t fennec::vector< ScalarT, IndicesV >::decay ( )
inline
Returns
scalar if \(N==1\), otherwise, vector

◆ operator[]() [1/2]

template<typename ScalarT , size_t... IndicesV>
constexpr scalar_t & fennec::vector< ScalarT, IndicesV >::operator[] ( size_t  i)
inlineconstexpr
Returns
a copy of the component
Parameters
ithe index of the component

◆ operator[]() [2/2]

template<typename ScalarT , size_t... IndicesV>
constexpr scalar_t fennec::vector< ScalarT, IndicesV >::operator[] ( size_t  i) const
inlineconstexpr
Returns
a copy of the component
Parameters
ithe index of the component

◆ operator=() [1/2]

template<typename ScalarT , size_t... IndicesV>
constexpr vector_t & fennec::vector< ScalarT, IndicesV >::operator= ( const vector_t rhs)
inlineconstexpr
Returns
A reference to this, after having set lhs, such that \(lhs_i=rhs_i\)
Parameters
rhsvector to copy

◆ operator=() [2/2]

template<typename ScalarT , size_t... IndicesV>
constexpr vector_t & fennec::vector< ScalarT, IndicesV >::operator= ( vector_t &&  rhs)
inlineconstexprnoexcept
Returns
A reference to this, after having set lhs, such that \(lhs_i=rhs_i\)
Parameters
rhsvector to move

◆ operator==()

template<typename ScalarT , size_t... IndicesV>
constexpr bool_t fennec::vector< ScalarT, IndicesV >::operator== ( const vector_t rhs) const
inlineconstexpr
Returns
true if every respective component is equivalent, otherwise returns false
Parameters
rhsvector to compare with

◆ operator!=()

template<typename ScalarT , size_t... IndicesV>
constexpr bool_t fennec::vector< ScalarT, IndicesV >::operator!= ( const vector_t rhs) const
inlineconstexpr
Returns
false if every respective component is equivalent, otherwise returns true
Parameters
rhsvector to compare with

Friends And Related Symbol Documentation

◆ operator+ [1/3]

template<typename ScalarT , size_t... IndicesV>
constexpr friend vector_t operator+ ( scalar_t  lhs,
const vector_t rhs 
)
friend
Returns
A vector v such that, \(v_i=lhs_i+rhs_i\)
Parameters
lhsleft hand side
rhsright hand side

◆ operator- [1/4]

template<typename ScalarT , size_t... IndicesV>
constexpr friend vector_t operator- ( scalar_t  lhs,
const vector_t rhs 
)
friend
Returns
A vector v such that, \(v_i=lhs_i-rhs_i\)
Parameters
lhsleft hand side
rhsright hand side

◆ operator* [1/3]

template<typename ScalarT , size_t... IndicesV>
constexpr friend vector_t operator* ( scalar_t  lhs,
const vector_t rhs 
)
friend
Returns
A vector v such that, \(v_i={lhs_i}\cdot{rhs_i}\)
Parameters
lhsleft hand side
rhsright hand side

◆ operator/ [1/3]

template<typename ScalarT , size_t... IndicesV>
constexpr friend vector_t operator/ ( scalar_t  lhs,
const vector_t rhs 
)
friend
Returns
A vector v such that, \(v_i=\frac{lhs_i}{rhs_i}\)
Parameters
lhsleft hand side
rhsright hand side

◆ operator% [1/3]

template<typename ScalarT , size_t... IndicesV>
constexpr friend vector_t operator% ( scalar_t  lhs,
const vector_t rhs 
)
friend
Returns
A vector v such that, \(v_i=lhs_i\%rhs_i\)
Parameters
lhsleft hand side
rhsright hand side

◆ operator+ [2/3]

template<typename ScalarT , size_t... IndicesV>
constexpr friend vector_t operator+ ( const vector_t lhs,
scalar_t  rhs 
)
friend
Returns
A vector v such that, \(v_i=lhs_i+rhs_i\)
Parameters
lhsleft hand side
rhsright hand side

◆ operator- [2/4]

template<typename ScalarT , size_t... IndicesV>
constexpr friend vector_t operator- ( const vector_t lhs,
scalar_t  rhs 
)
friend
Parameters
lhsleft hand side
rhsright hand side
Returns
A vector v such that, \(v_i=lhs_i-rhs_i\)

◆ operator* [2/3]

template<typename ScalarT , size_t... IndicesV>
constexpr friend vector_t operator* ( const vector_t lhs,
scalar_t  rhs 
)
friend
Parameters
lhsleft hand side
rhsright hand side
Returns
A vector v such that, \(v_i={lhs_i}\cdot{rhs_i}\)

◆ operator/ [2/3]

template<typename ScalarT , size_t... IndicesV>
constexpr friend vector_t operator/ ( const vector_t lhs,
scalar_t  rhs 
)
friend
Parameters
lhsleft hand side
rhsright hand side
Returns
A vector v such that, \(v_i=\frac{lhs_i}{rhs_i}\)

◆ operator% [2/3]

template<typename ScalarT , size_t... IndicesV>
constexpr friend vector_t operator% ( const vector_t lhs,
scalar_t  rhs 
)
friend
Parameters
lhsleft hand side
rhsright hand side
Returns
A vector v such that, \(v_i=lhs_i\%rhs_i\)

◆ operator+= [1/2]

template<typename ScalarT , size_t... IndicesV>
constexpr friend vector_t & operator+= ( vector_t lhs,
scalar_t  rhs 
)
friend
Parameters
lhsLeft Hand Side of the Expression
rhsRight Hand Side of the Expression
Returns
A vector v such that, \(v_i=lhs_i+rhs_i\)

◆ operator-= [1/2]

template<typename ScalarT , size_t... IndicesV>
constexpr friend vector_t & operator-= ( vector_t lhs,
scalar_t  rhs 
)
friend
Parameters
lhsLeft Hand Side of the Expression
rhsRight Hand Side of the Expression
Returns
A vector v such that, \(v_i=lhs_i-rhs_i\)

◆ operator*= [1/2]

template<typename ScalarT , size_t... IndicesV>
constexpr friend vector_t & operator*= ( vector_t lhs,
scalar_t  rhs 
)
friend
Parameters
lhsLeft Hand Side of the Expression
rhsRight Hand Side of the Expression
Returns
A vector v such that, \(v_i={lhs_i}\cdot{rhs_i}\)

◆ operator/= [1/2]

template<typename ScalarT , size_t... IndicesV>
constexpr friend vector_t & operator/= ( vector_t lhs,
scalar_t  rhs 
)
friend
Parameters
lhsLeft Hand Side of the Expression
rhsRight Hand Side of the Expression
Returns
A vector v such that, \(v_i=\frac{lhs_i}{rhs_i}\)

◆ operator%= [1/2]

template<typename ScalarT , size_t... IndicesV>
constexpr friend vector_t & operator%= ( vector_t lhs,
scalar_t  rhs 
)
friend
Parameters
lhsLeft Hand Side of the Expression
rhsRight Hand Side of the Expression
Returns
A vector v such that, \(v_i=lhs_i\%rhs_i\)

◆ operator- [3/4]

template<typename ScalarT , size_t... IndicesV>
constexpr friend vector_t operator- ( const vector_t x)
friend
Parameters
xthe vector
Returns
A vector v such that, \(v_i=-x_i\)

◆ operator+ [3/3]

template<typename ScalarT , size_t... IndicesV>
constexpr friend vector_t operator+ ( const vector_t lhs,
const vector_t rhs 
)
friend
Parameters
lhsLeft Hand Side of the Expression
rhsRight Hand Side of the Expression
Returns
A vector v such that, \(v_i=lhs_i+rhs_i\)

◆ operator- [4/4]

template<typename ScalarT , size_t... IndicesV>
constexpr friend vector_t operator- ( const vector_t lhs,
const vector_t rhs 
)
friend
Parameters
lhsLeft Hand Side of the Expression
rhsRight Hand Side of the Expression
Returns
A vector v such that, \(v_i=lhs_i-rhs_i\)

◆ operator* [3/3]

template<typename ScalarT , size_t... IndicesV>
constexpr friend vector_t operator* ( const vector_t lhs,
const vector_t rhs 
)
friend
Parameters
lhsLeft Hand Side of the Expression
rhsRight Hand Side of the Expression
Returns
A vector v such that, \(v_i={lhs_i}\cdot{rhs_i}\)

◆ operator/ [3/3]

template<typename ScalarT , size_t... IndicesV>
constexpr friend vector_t operator/ ( const vector_t lhs,
const vector_t rhs 
)
friend
Parameters
lhsLeft Hand Side of the Expression
rhsRight Hand Side of the Expression
Returns
A vector v such that, \(v_i=\frac{lhs_i}{rhs_i}\)

◆ operator% [3/3]

template<typename ScalarT , size_t... IndicesV>
constexpr friend vector_t operator% ( const vector_t lhs,
const vector_t rhs 
)
friend
Parameters
lhsLeft Hand Side of the Expression
rhsRight Hand Side of the Expression
Returns
A vector v such that, \(v_i=lhs_i\%rhs_i\)

◆ operator+= [2/2]

template<typename ScalarT , size_t... IndicesV>
constexpr friend vector_t & operator+= ( vector_t lhs,
const vector_t rhs 
)
friend
Parameters
lhsLeft Hand Side of the Expression
rhsRight Hand Side of the Expression
Returns
A vector v such that, \(v_i=lhs_i+rhs_i\)

◆ operator-= [2/2]

template<typename ScalarT , size_t... IndicesV>
constexpr friend vector_t & operator-= ( vector_t lhs,
const vector_t rhs 
)
friend
Parameters
lhsLeft Hand Side of the Expression
rhsRight Hand Side of the Expression
Returns
A vector v such that, \(v_i=lhs_i-rhs_i\)

◆ operator*= [2/2]

template<typename ScalarT , size_t... IndicesV>
constexpr friend vector_t & operator*= ( vector_t lhs,
const vector_t rhs 
)
friend
Parameters
lhsLeft Hand Side of the Expression
rhsRight Hand Side of the Expression
Returns
A vector v such that, \(v_i={lhs_i}\cdot{rhs_i}\)

◆ operator/= [2/2]

template<typename ScalarT , size_t... IndicesV>
constexpr friend vector_t & operator/= ( vector_t lhs,
const vector_t rhs 
)
friend
Parameters
lhsLeft Hand Side of the Expression
rhsRight Hand Side of the Expression
Returns
A vector v such that, \(v_i=\frac{lhs_i}{rhs_i}\)

◆ operator%= [2/2]

template<typename ScalarT , size_t... IndicesV>
constexpr friend vector_t & operator%= ( vector_t lhs,
const vector_t rhs 
)
friend
Parameters
lhsLeft Hand Side of the Expression
rhsRight Hand Side of the Expression
Returns
A vector v such that, \(v_i=lhs_i\%rhs_i\)

◆ operator!

template<typename ScalarT , size_t... IndicesV>
constexpr friend vector_t operator! ( const vector_t x)
friend
Parameters
xthe vector
Returns
A vector v such that, \(v_i=!x_i\)

◆ operator&& [1/2]

template<typename ScalarT , size_t... IndicesV>
constexpr friend vector_t operator&& ( const vector_t lhs,
scalar_t  rhs 
)
friend
Parameters
lhsLeft Hand Side of the Expression
rhsRight Hand Side of the Expression
Returns
A vector v such that, \(v_i=lhs_i\&\&rhs_i\)

◆ operator&& [2/2]

template<typename ScalarT , size_t... IndicesV>
constexpr friend vector_t operator&& ( const vector_t lhs,
const vector_t rhs 
)
friend
Parameters
lhsLeft Hand Side of the Expression
rhsRight Hand Side of the Expression
Returns
A vector v such that, \(v_i=lhs_i\&\&rhs_i\)

◆ operator|| [1/2]

template<typename ScalarT , size_t... IndicesV>
constexpr friend vector_t operator|| ( const vector_t lhs,
scalar_t  rhs 
)
friend
Parameters
lhsLeft Hand Side of the Expression
rhsRight Hand Side of the Expression
Returns
A vector v such that, \(v_i=lhs_i\|\|rhs_i\)

◆ operator|| [2/2]

template<typename ScalarT , size_t... IndicesV>
constexpr friend vector_t operator|| ( const vector_t lhs,
const vector_t rhs 
)
friend
Parameters
lhsLeft Hand Side of the Expression
rhsRight Hand Side of the Expression
Returns
A vector v such that, \(v_i=lhs_i\|\|rhs_i\)

◆ operator& [1/3]

template<typename ScalarT , size_t... IndicesV>
constexpr friend vector_t operator& ( scalar_t  rhs,
const vector_t lhs 
)
friend
Parameters
lhsLeft Hand Side of the Expression
rhsRight Hand Side of the Expression
Returns
A vector v such that, \(v_i=lhs_i\&rhs_i\)

◆ operator& [2/3]

template<typename ScalarT , size_t... IndicesV>
constexpr friend vector_t operator& ( const vector_t lhs,
scalar_t  rhs 
)
friend
Parameters
lhsLeft Hand Side of the Expression
rhsRight Hand Side of the Expression
Returns
A vector v such that, \(v_i=lhs_i\&rhs_i\)

◆ operator&= [1/2]

template<typename ScalarT , size_t... IndicesV>
constexpr friend vector_t operator&= ( vector_t lhs,
scalar_t  rhs 
)
friend
Parameters
lhsLeft Hand Side of the Expression
rhsRight Hand Side of the Expression
Returns
A vector v such that, \(v_i=lhs_i\&rhs_i\)

◆ operator& [3/3]

template<typename ScalarT , size_t... IndicesV>
constexpr friend vector_t operator& ( const vector_t lhs,
const vector_t rhs 
)
friend
Parameters
lhsLeft Hand Side of the Expression
rhsRight Hand Side of the Expression
Returns
A vector v such that, \(v_i=lhs_i\&rhs_i\)

◆ operator&= [2/2]

template<typename ScalarT , size_t... IndicesV>
constexpr friend vector_t operator&= ( vector_t lhs,
const vector_t rhs 
)
friend
Parameters
lhsLeft Hand Side of the Expression
rhsRight Hand Side of the Expression
Returns
A vector v such that, \(v_i=lhs_i\&rhs_i\)

◆ operator| [1/3]

template<typename ScalarT , size_t... IndicesV>
constexpr friend vector_t operator| ( scalar_t  rhs,
const vector_t lhs 
)
friend
Parameters
lhsLeft Hand Side of the Expression
rhsRight Hand Side of the Expression
Returns
A vector v such that, \(v_i=lhs_i|rhs_i\)

◆ operator| [2/3]

template<typename ScalarT , size_t... IndicesV>
constexpr friend vector_t operator| ( const vector_t lhs,
scalar_t  rhs 
)
friend
Parameters
lhsLeft Hand Side of the Expression
rhsRight Hand Side of the Expression
Returns
A vector v such that, \(v_i=lhs_i|rhs_i\)

◆ operator|= [1/2]

template<typename ScalarT , size_t... IndicesV>
constexpr friend vector_t operator|= ( vector_t lhs,
scalar_t  rhs 
)
friend
Parameters
lhsLeft Hand Side of the Expression
rhsRight Hand Side of the Expression
Returns
A vector v such that, \(v_i=lhs_i|rhs_i\)

◆ operator| [3/3]

template<typename ScalarT , size_t... IndicesV>
constexpr friend vector_t operator| ( const vector_t lhs,
const vector_t rhs 
)
friend
Parameters
lhsLeft Hand Side of the Expression
rhsRight Hand Side of the Expression
Returns
A vector v such that, \(v_i=lhs_i|rhs_i\)

◆ operator|= [2/2]

template<typename ScalarT , size_t... IndicesV>
constexpr friend vector_t operator|= ( vector_t lhs,
const vector_t rhs 
)
friend
Parameters
lhsLeft Hand Side of the Expression
rhsRight Hand Side of the Expression
Returns
A vector v such that, \(v_i=lhs_i|rhs_i\)

◆ operator^ [1/3]

template<typename ScalarT , size_t... IndicesV>
constexpr friend vector_t operator^ ( scalar_t  lhs,
const vector_t rhs 
)
friend

scalar - vector bitwise xor operator

Parameters
lhsLeft Hand Side of the Expression
rhsRight Hand Side of the Expression
Returns
A vector v such that, \(v_i=lhs_i\^rhs_i\)

◆ operator^ [2/3]

template<typename ScalarT , size_t... IndicesV>
constexpr friend vector_t operator^ ( const vector_t lhs,
scalar_t  rhs 
)
friend

vector - scalar bitwise xor operator

Parameters
lhsLeft Hand Side of the Expression
rhsRight Hand Side of the Expression
Returns
A vector v such that, \(v_i=lhs_i\^rhs_i\)

◆ operator^= [1/2]

template<typename ScalarT , size_t... IndicesV>
constexpr friend vector_t operator^= ( vector_t lhs,
scalar_t  rhs 
)
friend

vector - scalar bitwise xor assignment operator

Parameters
lhsLeft Hand Side of the Expression
rhsRight Hand Side of the Expression
Returns
A vector v such that, \(v_i=lhs_i\^rhs_i\)

◆ operator^ [3/3]

template<typename ScalarT , size_t... IndicesV>
constexpr friend vector_t operator^ ( const vector_t lhs,
const vector_t rhs 
)
friend

vector - vector bitwise xor operator

Parameters
lhsLeft Hand Side of the Expression
rhsRight Hand Side of the Expression
Returns
A vector v such that, \(v_i=lhs_i\^rhs_i\)

◆ operator^= [2/2]

template<typename ScalarT , size_t... IndicesV>
constexpr friend vector_t operator^= ( vector_t lhs,
const vector_t rhs 
)
friend

vector - vector bitwise xor assignment operator

Parameters
lhsLeft Hand Side of the Expression
rhsRight Hand Side of the Expression
Returns
A vector v such that, \(v_i=lhs_i\^rhs_i\)

◆ operator<< [1/3]

template<typename ScalarT , size_t... IndicesV>
constexpr friend vector_t operator<< ( scalar_t  lhs,
const vector_t rhs 
)
friend

scalar - vector bitwise left-shift operator

Parameters
lhsLeft Hand Side of the Expression
rhsRight Hand Side of the Expression
Returns
A vector v such that, \(v_i=lhs_i<<rhs_i\)

◆ operator<< [2/3]

template<typename ScalarT , size_t... IndicesV>
constexpr friend vector_t operator<< ( const vector_t lhs,
scalar_t  rhs 
)
friend

vector - scalar bitwise left-shift operator

Parameters
lhsLeft Hand Side of the Expression
rhsRight Hand Side of the Expression
Returns
A vector v such that, \(v_i=lhs_i<<rhs_i\)

◆ operator<<= [1/2]

template<typename ScalarT , size_t... IndicesV>
constexpr friend vector_t operator<<= ( vector_t lhs,
scalar_t  rhs 
)
friend

vector - scalar bitwise left-shift assignment operator

Parameters
lhsLeft Hand Side of the Expression
rhsRight Hand Side of the Expression
Returns
A vector v such that, \(v_i=lhs_i<<=rhs_i\)

◆ operator<< [3/3]

template<typename ScalarT , size_t... IndicesV>
constexpr friend vector_t operator<< ( const vector_t lhs,
const vector_t rhs 
)
friend

vector - vector bitwise or operator

Parameters
lhsLeft Hand Side of the Expression
rhsRight Hand Side of the Expression
Returns
A vector v such that, \(v_i=lhs_i<<rhs_i\)

◆ operator<<= [2/2]

template<typename ScalarT , size_t... IndicesV>
constexpr friend vector_t operator<<= ( vector_t lhs,
const vector_t rhs 
)
friend

vector - vector bitwise or assignment operator

Parameters
lhsLeft Hand Side of the Expression
rhsRight Hand Side of the Expression
Returns
A vector v such that, \(v_i=lhs_i<<=rhs_i\)

◆ operator>> [1/3]

template<typename ScalarT , size_t... IndicesV>
constexpr friend vector_t operator>> ( scalar_t  lhs,
const vector_t rhs 
)
friend

scalar - vector bitwise or operator

Parameters
lhsLeft Hand Side of the Expression
rhsRight Hand Side of the Expression
Returns
A vector v such that, \(v_i=lhs_i>>rhs_i\)

◆ operator>> [2/3]

template<typename ScalarT , size_t... IndicesV>
constexpr friend vector_t operator>> ( const vector_t lhs,
scalar_t  rhs 
)
friend

vector - scalar bitwise or operator

Parameters
lhsLeft Hand Side of the Expression
rhsRight Hand Side of the Expression
Returns
A vector v such that, \(v_i=lhs_i>>rhs_i\)

◆ operator>>= [1/2]

template<typename ScalarT , size_t... IndicesV>
constexpr friend vector_t operator>>= ( vector_t lhs,
scalar_t  rhs 
)
friend

vector - scalar bitwise left-shift assignment operator

Parameters
lhsLeft Hand Side of the Expression
rhsRight Hand Side of the Expression
Returns
A vector v such that, \(v_i=lhs_i>>=rhs_i\)

◆ operator>> [3/3]

template<typename ScalarT , size_t... IndicesV>
constexpr friend vector_t operator>> ( const vector_t lhs,
const vector_t rhs 
)
friend

vector - vector bitwise or operator

Parameters
lhsLeft Hand Side of the Expression
rhsRight Hand Side of the Expression
Returns
A vector v such that, \(v_i=lhs_i>>rhs_i\)

◆ operator>>= [2/2]

template<typename ScalarT , size_t... IndicesV>
constexpr friend vector_t operator>>= ( vector_t lhs,
const vector_t rhs 
)
friend

vector - vector bitwise or assignment operator

Parameters
lhsLeft Hand Side of the Expression
rhsRight Hand Side of the Expression
Returns
A vector v such that, \(v_i=lhs_i>>=rhs_i\)

The documentation for this struct was generated from the following file: