Not Enough Math
Lightweight zero-dependency C++ math library
Loading...
Searching...
No Matches
nem::vec< _T, _N > Struct Template Reference

#include <vec.hpp>

Inheritance diagram for nem::vec< _T, _N >:
nem::storage< _T, _N >

Public Types

using ITEM_TYPE = _T
 
- Public Types inherited from nem::storage< _T, _N >
using ITEM_TYPE = _T
 

Public Member Functions

 vec ()=default
 
 vec (ITEM_TYPE scalar)
 
template<typename... Args>
requires (sizeof...(Args) == ITEM_COUNT) && ((std::is_same_v<Args, ITEM_TYPE> || nem::is_subset_of_v<Args, ITEM_TYPE>) && ...)
 vec (Args... args)
 
constexpr ITEM_TYPEoperator[] (size_t index)
 
constexpr const ITEM_TYPEoperator[] (size_t index) const
 
vecoperator+= (const vec &rhs)
 
vecoperator-= (const vec &rhs)
 
vecoperator*= (const vec &rhs)
 
vecoperator*= (ITEM_TYPE scalar)
 
vecoperator/= (const vec &rhs)
 
vecoperator/= (ITEM_TYPE scalar)
 

Static Public Member Functions

static constexpr vec NaN ()
 

Static Public Attributes

static constexpr size_t ITEM_COUNT = _N
 
- Static Public Attributes inherited from nem::storage< _T, _N >
static constexpr size_t ITEM_COUNT = _N
 

Friends

vec operator+ (vec lhs, const vec &rhs)
 
vec operator- (vec lhs, const vec &rhs)
 
vec operator* (vec lhs, const vec &rhs)
 
vec operator* (vec vec, ITEM_TYPE scalar)
 
vec operator* (ITEM_TYPE scalar, vec vec)
 
vec operator/ (vec lhs, const vec &rhs)
 
vec operator/ (vec vec, ITEM_TYPE scalar)
 
vec operator/ (ITEM_TYPE scalar, vec vec)
 
vec operator- (vec value)
 
vec operator+ (vec value)
 

Additional Inherited Members

- Public Attributes inherited from nem::storage< _T, _N >
ITEM_TYPE data [ITEM_COUNT]
 

Detailed Description

template<typename _T, size_t _N>
requires (_N > 1)
struct nem::vec< _T, _N >

Definition at line 90 of file vec.hpp.

Member Typedef Documentation

◆ ITEM_TYPE

template<typename _T , size_t _N>
using nem::vec< _T, _N >::ITEM_TYPE = _T

Definition at line 92 of file vec.hpp.

Constructor & Destructor Documentation

◆ vec() [1/3]

template<typename _T , size_t _N>
nem::vec< _T, _N >::vec ( )
default

◆ vec() [2/3]

template<typename _T , size_t _N>
nem::vec< _T, _N >::vec ( ITEM_TYPE scalar)
inline

Definition at line 96 of file vec.hpp.

◆ vec() [3/3]

template<typename _T , size_t _N>
template<typename... Args>
requires (sizeof...(Args) == ITEM_COUNT) && ((std::is_same_v<Args, ITEM_TYPE> || nem::is_subset_of_v<Args, ITEM_TYPE>) && ...)
nem::vec< _T, _N >::vec ( Args... args)
inline

Definition at line 106 of file vec.hpp.

Member Function Documentation

◆ NaN()

template<typename _T , size_t _N>
static constexpr vec nem::vec< _T, _N >::NaN ( )
inlinestaticconstexpr

Definition at line 115 of file vec.hpp.

◆ operator*=() [1/2]

template<typename _T , size_t _N>
vec & nem::vec< _T, _N >::operator*= ( const vec< _T, _N > & rhs)
inline

Definition at line 135 of file vec.hpp.

◆ operator*=() [2/2]

template<typename _T , size_t _N>
vec & nem::vec< _T, _N >::operator*= ( ITEM_TYPE scalar)
inline

Definition at line 144 of file vec.hpp.

◆ operator+=()

template<typename _T , size_t _N>
vec & nem::vec< _T, _N >::operator+= ( const vec< _T, _N > & rhs)
inline

Definition at line 117 of file vec.hpp.

◆ operator-=()

template<typename _T , size_t _N>
vec & nem::vec< _T, _N >::operator-= ( const vec< _T, _N > & rhs)
inline

Definition at line 126 of file vec.hpp.

◆ operator/=() [1/2]

template<typename _T , size_t _N>
vec & nem::vec< _T, _N >::operator/= ( const vec< _T, _N > & rhs)
inline

Definition at line 153 of file vec.hpp.

◆ operator/=() [2/2]

template<typename _T , size_t _N>
vec & nem::vec< _T, _N >::operator/= ( ITEM_TYPE scalar)
inline

Definition at line 162 of file vec.hpp.

◆ operator[]() [1/2]

template<typename _T , size_t _N>
ITEM_TYPE & nem::vec< _T, _N >::operator[] ( size_t index)
inlineconstexpr

Definition at line 112 of file vec.hpp.

◆ operator[]() [2/2]

template<typename _T , size_t _N>
const ITEM_TYPE & nem::vec< _T, _N >::operator[] ( size_t index) const
inlineconstexpr

Definition at line 113 of file vec.hpp.

Friends And Related Symbol Documentation

◆ operator* [1/3]

template<typename _T , size_t _N>
vec operator* ( ITEM_TYPE scalar,
vec< _T, _N > vec )
friend

Definition at line 206 of file vec.hpp.

◆ operator* [2/3]

template<typename _T , size_t _N>
vec operator* ( vec< _T, _N > lhs,
const vec< _T, _N > & rhs )
friend

Definition at line 194 of file vec.hpp.

◆ operator* [3/3]

template<typename _T , size_t _N>
vec operator* ( vec< _T, _N > vec,
ITEM_TYPE scalar )
friend

Definition at line 200 of file vec.hpp.

◆ operator+ [1/2]

template<typename _T , size_t _N>
vec operator+ ( vec< _T, _N > lhs,
const vec< _T, _N > & rhs )
friend

Definition at line 182 of file vec.hpp.

◆ operator+ [2/2]

template<typename _T , size_t _N>
vec operator+ ( vec< _T, _N > value)
friend

Definition at line 245 of file vec.hpp.

◆ operator- [1/2]

template<typename _T , size_t _N>
vec operator- ( vec< _T, _N > lhs,
const vec< _T, _N > & rhs )
friend

Definition at line 188 of file vec.hpp.

◆ operator- [2/2]

template<typename _T , size_t _N>
vec operator- ( vec< _T, _N > value)
friend

Definition at line 235 of file vec.hpp.

◆ operator/ [1/3]

template<typename _T , size_t _N>
vec operator/ ( ITEM_TYPE scalar,
vec< _T, _N > vec )
friend

Definition at line 224 of file vec.hpp.

◆ operator/ [2/3]

template<typename _T , size_t _N>
vec operator/ ( vec< _T, _N > lhs,
const vec< _T, _N > & rhs )
friend

Definition at line 212 of file vec.hpp.

◆ operator/ [3/3]

template<typename _T , size_t _N>
vec operator/ ( vec< _T, _N > vec,
ITEM_TYPE scalar )
friend

Definition at line 218 of file vec.hpp.

Member Data Documentation

◆ ITEM_COUNT

template<typename _T , size_t _N>
size_t nem::vec< _T, _N >::ITEM_COUNT = _N
staticconstexpr

Definition at line 93 of file vec.hpp.


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