SourceForge Logo Tiny Vector Matrix library using Expression Templates Sourceforge Project Page

tvmet::element_wise Namespace Reference


Detailed Description

Operators inside this namespace does elementwise operations.


Functions

template<class T1, class T2, std::size_t Rows, std::size_t Cols>
XprMatrix< XprBinOp< Fcnl_mul<
T1, T2 >, MatrixConstReference<
T1, Rows, Cols >, MatrixConstReference<
T2, Rows, Cols > >, Rows,
Cols > 
mul (const Matrix< T1, Rows, Cols > &lhs, const Matrix< T2, Rows, Cols > &rhs) TVMET_CXX_ALWAYS_INLINE
template<class E, class T, std::size_t Rows, std::size_t Cols>
XprMatrix< XprBinOp< Fcnl_mul<
typename E::value_type, T >,
XprMatrix< E, Rows, Cols >,
MatrixConstReference< T,
Rows, Cols > >, Rows, Cols > 
mul (const XprMatrix< E, Rows, Cols > &lhs, const Matrix< T, Rows, Cols > &rhs) TVMET_CXX_ALWAYS_INLINE
template<class T, class E, std::size_t Rows, std::size_t Cols>
XprMatrix< XprBinOp< Fcnl_mul<
typename E::value_type, T >,
MatrixConstReference< T,
Rows, Cols >, XprMatrix<
E, Rows, Cols > >, Rows,
Cols > 
mul (const Matrix< T, Rows, Cols > &lhs, const XprMatrix< E, Rows, Cols > &rhs) TVMET_CXX_ALWAYS_INLINE
template<class T1, class T2, std::size_t Rows, std::size_t Cols>
XprMatrix< XprBinOp< Fcnl_div<
T1, T2 >, MatrixConstReference<
T1, Rows, Cols >, MatrixConstReference<
T2, Rows, Cols > >, Rows,
Cols > 
div (const Matrix< T1, Rows, Cols > &lhs, const Matrix< T2, Rows, Cols > &rhs) TVMET_CXX_ALWAYS_INLINE
template<class E, class T, std::size_t Rows, std::size_t Cols>
XprMatrix< XprBinOp< Fcnl_div<
typename E::value_type, T >,
XprMatrix< E, Rows, Cols >,
MatrixConstReference< T,
Rows, Cols > >, Rows, Cols > 
div (const XprMatrix< E, Rows, Cols > &lhs, const Matrix< T, Rows, Cols > &rhs) TVMET_CXX_ALWAYS_INLINE
template<class T, class E, std::size_t Rows, std::size_t Cols>
XprMatrix< XprBinOp< Fcnl_div<
typename E::value_type, T >,
MatrixConstReference< T,
Rows, Cols >, XprMatrix<
E, Rows, Cols > >, Rows,
Cols > 
div (const Matrix< T, Rows, Cols > &lhs, const XprMatrix< E, Rows, Cols > &rhs) TVMET_CXX_ALWAYS_INLINE
template<class T1, class T2, std::size_t Rows, std::size_t Cols>
Matrix< T1, Rows, Cols > & operator *= (Matrix< T1, Rows, Cols > &lhs, const Matrix< T2, Rows, Cols > &rhs) TVMET_CXX_ALWAYS_INLINE
template<class T, class E, std::size_t Rows, std::size_t Cols>
Matrix< T, Rows, Cols > & operator *= (Matrix< T, Rows, Cols > &lhs, const XprMatrix< E, Rows, Cols > &rhs) TVMET_CXX_ALWAYS_INLINE
template<class T1, class T2, std::size_t Rows, std::size_t Cols>
Matrix< T1, Rows, Cols > & operator/= (Matrix< T1, Rows, Cols > &lhs, const Matrix< T2, Rows, Cols > &rhs) TVMET_CXX_ALWAYS_INLINE
template<class T, class E, std::size_t Rows, std::size_t Cols>
Matrix< T, Rows, Cols > & operator/= (Matrix< T, Rows, Cols > &lhs, const XprMatrix< E, Rows, Cols > &rhs) TVMET_CXX_ALWAYS_INLINE
template<class T1, class T2, std::size_t Rows, std::size_t Cols>
Matrix< T1, Rows, Cols > & operator%= (Matrix< T1, Rows, Cols > &lhs, const Matrix< T2, Rows, Cols > &rhs) TVMET_CXX_ALWAYS_INLINE
template<class T, class E, std::size_t Rows, std::size_t Cols>
Matrix< T, Rows, Cols > & operator%= (Matrix< T, Rows, Cols > &lhs, const XprMatrix< E, Rows, Cols > &rhs) TVMET_CXX_ALWAYS_INLINE
template<class T1, class T2, std::size_t Rows, std::size_t Cols>
Matrix< T1, Rows, Cols > & operator^= (Matrix< T1, Rows, Cols > &lhs, const Matrix< T2, Rows, Cols > &rhs) TVMET_CXX_ALWAYS_INLINE
template<class T, class E, std::size_t Rows, std::size_t Cols>
Matrix< T, Rows, Cols > & operator^= (Matrix< T, Rows, Cols > &lhs, const XprMatrix< E, Rows, Cols > &rhs) TVMET_CXX_ALWAYS_INLINE
template<class T1, class T2, std::size_t Rows, std::size_t Cols>
Matrix< T1, Rows, Cols > & operator &= (Matrix< T1, Rows, Cols > &lhs, const Matrix< T2, Rows, Cols > &rhs) TVMET_CXX_ALWAYS_INLINE
template<class T, class E, std::size_t Rows, std::size_t Cols>
Matrix< T, Rows, Cols > & operator &= (Matrix< T, Rows, Cols > &lhs, const XprMatrix< E, Rows, Cols > &rhs) TVMET_CXX_ALWAYS_INLINE
template<class T1, class T2, std::size_t Rows, std::size_t Cols>
Matrix< T1, Rows, Cols > & operator|= (Matrix< T1, Rows, Cols > &lhs, const Matrix< T2, Rows, Cols > &rhs) TVMET_CXX_ALWAYS_INLINE
template<class T, class E, std::size_t Rows, std::size_t Cols>
Matrix< T, Rows, Cols > & operator|= (Matrix< T, Rows, Cols > &lhs, const XprMatrix< E, Rows, Cols > &rhs) TVMET_CXX_ALWAYS_INLINE
template<class T1, class T2, std::size_t Rows, std::size_t Cols>
Matrix< T1, Rows, Cols > & operator<<= (Matrix< T1, Rows, Cols > &lhs, const Matrix< T2, Rows, Cols > &rhs) TVMET_CXX_ALWAYS_INLINE
template<class T, class E, std::size_t Rows, std::size_t Cols>
Matrix< T, Rows, Cols > & operator<<= (Matrix< T, Rows, Cols > &lhs, const XprMatrix< E, Rows, Cols > &rhs) TVMET_CXX_ALWAYS_INLINE
template<class T1, class T2, std::size_t Rows, std::size_t Cols>
Matrix< T1, Rows, Cols > & operator>>= (Matrix< T1, Rows, Cols > &lhs, const Matrix< T2, Rows, Cols > &rhs) TVMET_CXX_ALWAYS_INLINE
template<class T, class E, std::size_t Rows, std::size_t Cols>
Matrix< T, Rows, Cols > & operator>>= (Matrix< T, Rows, Cols > &lhs, const XprMatrix< E, Rows, Cols > &rhs) TVMET_CXX_ALWAYS_INLINE
template<class T1, class T2, std::size_t Rows, std::size_t Cols>
XprMatrix< XprBinOp< Fcnl_mul<
T1, T2 >, MatrixConstReference<
T1, Rows, Cols >, MatrixConstReference<
T2, Rows, Cols > >, Rows,
Cols > 
operator * (const Matrix< T1, Rows, Cols > &lhs, const Matrix< T2, Rows, Cols > &rhs) TVMET_CXX_ALWAYS_INLINE
template<class E, class T, std::size_t Rows, std::size_t Cols>
XprMatrix< XprBinOp< Fcnl_mul<
typename E::value_type, T >,
XprMatrix< E, Rows, Cols >,
MatrixConstReference< T,
Rows, Cols > >, Rows, Cols > 
operator * (const XprMatrix< E, Rows, Cols > &lhs, const Matrix< T, Rows, Cols > &rhs) TVMET_CXX_ALWAYS_INLINE
template<class T, class E, std::size_t Rows, std::size_t Cols>
XprMatrix< XprBinOp< Fcnl_mul<
typename E::value_type, T >,
MatrixConstReference< T,
Rows, Cols >, XprMatrix<
E, Rows, Cols > >, Rows,
Cols > 
operator * (const Matrix< T, Rows, Cols > &lhs, const XprMatrix< E, Rows, Cols > &rhs) TVMET_CXX_ALWAYS_INLINE
template<class T1, class T2, std::size_t Rows, std::size_t Cols>
XprMatrix< XprBinOp< Fcnl_div<
T1, T2 >, MatrixConstReference<
T1, Rows, Cols >, MatrixConstReference<
T2, Rows, Cols > >, Rows,
Cols > 
operator/ (const Matrix< T1, Rows, Cols > &lhs, const Matrix< T2, Rows, Cols > &rhs) TVMET_CXX_ALWAYS_INLINE
template<class E, class T, std::size_t Rows, std::size_t Cols>
XprMatrix< XprBinOp< Fcnl_div<
typename E::value_type, T >,
XprMatrix< E, Rows, Cols >,
MatrixConstReference< T,
Rows, Cols > >, Rows, Cols > 
operator/ (const XprMatrix< E, Rows, Cols > &lhs, const Matrix< T, Rows, Cols > &rhs) TVMET_CXX_ALWAYS_INLINE
template<class T, class E, std::size_t Rows, std::size_t Cols>
XprMatrix< XprBinOp< Fcnl_div<
typename E::value_type, T >,
MatrixConstReference< T,
Rows, Cols >, XprMatrix<
E, Rows, Cols > >, Rows,
Cols > 
operator/ (const Matrix< T, Rows, Cols > &lhs, const XprMatrix< E, Rows, Cols > &rhs) TVMET_CXX_ALWAYS_INLINE
template<class T1, std::size_t Rows, std::size_t Cols, class T2>
XprMatrix< XprBinOp< Fcnl_mod<
T1, T2 >, MatrixConstReference<
T1, Rows, Cols >, MatrixConstReference<
T2, Rows, Cols > >, Rows,
Cols > 
operator% (const Matrix< T1, Rows, Cols > &lhs, const Matrix< T2, Rows, Cols > &rhs) TVMET_CXX_ALWAYS_INLINE
template<class E, class T, std::size_t Rows, std::size_t Cols>
XprMatrix< XprBinOp< Fcnl_mod<
typename E::value_type, T >,
XprMatrix< E, Rows, Cols >,
MatrixConstReference< T,
Rows, Cols > >, Rows, Cols > 
operator% (const XprMatrix< E, Rows, Cols > &lhs, const Matrix< T, Rows, Cols > &rhs) TVMET_CXX_ALWAYS_INLINE
template<class T, std::size_t Rows, std::size_t Cols, class E>
XprMatrix< XprBinOp< Fcnl_mod<
typename E::value_type, T >,
MatrixConstReference< T,
Rows, Cols >, XprMatrix<
E, Rows, Cols > >, Rows,
Cols > 
operator% (const Matrix< T, Rows, Cols > &lhs, const XprMatrix< E, Rows, Cols > &rhs) TVMET_CXX_ALWAYS_INLINE
template<class T1, std::size_t Rows, std::size_t Cols, class T2>
XprMatrix< XprBinOp< Fcnl_bitxor<
T1, T2 >, MatrixConstReference<
T1, Rows, Cols >, MatrixConstReference<
T2, Rows, Cols > >, Rows,
Cols > 
operator^ (const Matrix< T1, Rows, Cols > &lhs, const Matrix< T2, Rows, Cols > &rhs) TVMET_CXX_ALWAYS_INLINE
template<class E, class T, std::size_t Rows, std::size_t Cols>
XprMatrix< XprBinOp< Fcnl_bitxor<
typename E::value_type, T >,
XprMatrix< E, Rows, Cols >,
MatrixConstReference< T,
Rows, Cols > >, Rows, Cols > 
operator^ (const XprMatrix< E, Rows, Cols > &lhs, const Matrix< T, Rows, Cols > &rhs) TVMET_CXX_ALWAYS_INLINE
template<class T, std::size_t Rows, std::size_t Cols, class E>
XprMatrix< XprBinOp< Fcnl_bitxor<
typename E::value_type, T >,
MatrixConstReference< T,
Rows, Cols >, XprMatrix<
E, Rows, Cols > >, Rows,
Cols > 
operator^ (const Matrix< T, Rows, Cols > &lhs, const XprMatrix< E, Rows, Cols > &rhs) TVMET_CXX_ALWAYS_INLINE
template<class T1, std::size_t Rows, std::size_t Cols, class T2>
XprMatrix< XprBinOp< Fcnl_bitand<
T1, T2 >, MatrixConstReference<
T1, Rows, Cols >, MatrixConstReference<
T2, Rows, Cols > >, Rows,
Cols > 
operator & (const Matrix< T1, Rows, Cols > &lhs, const Matrix< T2, Rows, Cols > &rhs) TVMET_CXX_ALWAYS_INLINE
template<class E, class T, std::size_t Rows, std::size_t Cols>
XprMatrix< XprBinOp< Fcnl_bitand<
typename E::value_type, T >,
XprMatrix< E, Rows, Cols >,
MatrixConstReference< T,
Rows, Cols > >, Rows, Cols > 
operator & (const XprMatrix< E, Rows, Cols > &lhs, const Matrix< T, Rows, Cols > &rhs) TVMET_CXX_ALWAYS_INLINE
template<class T, std::size_t Rows, std::size_t Cols, class E>
XprMatrix< XprBinOp< Fcnl_bitand<
typename E::value_type, T >,
MatrixConstReference< T,
Rows, Cols >, XprMatrix<
E, Rows, Cols > >, Rows,
Cols > 
operator & (const Matrix< T, Rows, Cols > &lhs, const XprMatrix< E, Rows, Cols > &rhs) TVMET_CXX_ALWAYS_INLINE
template<class T1, std::size_t Rows, std::size_t Cols, class T2>
XprMatrix< XprBinOp< Fcnl_bitor<
T1, T2 >, MatrixConstReference<
T1, Rows, Cols >, MatrixConstReference<
T2, Rows, Cols > >, Rows,
Cols > 
operator| (const Matrix< T1, Rows, Cols > &lhs, const Matrix< T2, Rows, Cols > &rhs) TVMET_CXX_ALWAYS_INLINE
template<class E, class T, std::size_t Rows, std::size_t Cols>
XprMatrix< XprBinOp< Fcnl_bitor<
typename E::value_type, T >,
XprMatrix< E, Rows, Cols >,
MatrixConstReference< T,
Rows, Cols > >, Rows, Cols > 
operator| (const XprMatrix< E, Rows, Cols > &lhs, const Matrix< T, Rows, Cols > &rhs) TVMET_CXX_ALWAYS_INLINE
template<class T, std::size_t Rows, std::size_t Cols, class E>
XprMatrix< XprBinOp< Fcnl_bitor<
typename E::value_type, T >,
MatrixConstReference< T,
Rows, Cols >, XprMatrix<
E, Rows, Cols > >, Rows,
Cols > 
operator| (const Matrix< T, Rows, Cols > &lhs, const XprMatrix< E, Rows, Cols > &rhs) TVMET_CXX_ALWAYS_INLINE
template<class T1, std::size_t Rows, std::size_t Cols, class T2>
XprMatrix< XprBinOp< Fcnl_shl<
T1, T2 >, MatrixConstReference<
T1, Rows, Cols >, MatrixConstReference<
T2, Rows, Cols > >, Rows,
Cols > 
operator<< (const Matrix< T1, Rows, Cols > &lhs, const Matrix< T2, Rows, Cols > &rhs) TVMET_CXX_ALWAYS_INLINE
template<class E, class T, std::size_t Rows, std::size_t Cols>
XprMatrix< XprBinOp< Fcnl_shl<
typename E::value_type, T >,
XprMatrix< E, Rows, Cols >,
MatrixConstReference< T,
Rows, Cols > >, Rows, Cols > 
operator<< (const XprMatrix< E, Rows, Cols > &lhs, const Matrix< T, Rows, Cols > &rhs) TVMET_CXX_ALWAYS_INLINE
template<class T, std::size_t Rows, std::size_t Cols, class E>
XprMatrix< XprBinOp< Fcnl_shl<
typename E::value_type, T >,
MatrixConstReference< T,
Rows, Cols >, XprMatrix<
E, Rows, Cols > >, Rows,
Cols > 
operator<< (const Matrix< T, Rows, Cols > &lhs, const XprMatrix< E, Rows, Cols > &rhs) TVMET_CXX_ALWAYS_INLINE
template<class T1, std::size_t Rows, std::size_t Cols, class T2>
XprMatrix< XprBinOp< Fcnl_shr<
T1, T2 >, MatrixConstReference<
T1, Rows, Cols >, MatrixConstReference<
T2, Rows, Cols > >, Rows,
Cols > 
operator>> (const Matrix< T1, Rows, Cols > &lhs, const Matrix< T2, Rows, Cols > &rhs) TVMET_CXX_ALWAYS_INLINE
template<class E, class T, std::size_t Rows, std::size_t Cols>
XprMatrix< XprBinOp< Fcnl_shr<
typename E::value_type, T >,
XprMatrix< E, Rows, Cols >,
MatrixConstReference< T,
Rows, Cols > >, Rows, Cols > 
operator>> (const XprMatrix< E, Rows, Cols > &lhs, const Matrix< T, Rows, Cols > &rhs) TVMET_CXX_ALWAYS_INLINE
template<class T, std::size_t Rows, std::size_t Cols, class E>
XprMatrix< XprBinOp< Fcnl_shr<
typename E::value_type, T >,
MatrixConstReference< T,
Rows, Cols >, XprMatrix<
E, Rows, Cols > >, Rows,
Cols > 
operator>> (const Matrix< T, Rows, Cols > &lhs, const XprMatrix< E, Rows, Cols > &rhs) TVMET_CXX_ALWAYS_INLINE
template<class T, std::size_t Rows, std::size_t Cols>
XprMatrix< XprBinOp< Fcnl_mod<
T, int >, MatrixConstReference<
T, Rows, Cols >, XprLiteral<
int > >, Rows, Cols > 
operator% (const Matrix< T, Rows, Cols > &lhs, int rhs) TVMET_CXX_ALWAYS_INLINE
template<class T, std::size_t Rows, std::size_t Cols>
XprMatrix< XprBinOp< Fcnl_mod<
int, T >, XprLiteral< int >,
MatrixConstReference< T,
Rows, Cols > >, Rows, Cols > 
operator% (int lhs, const Matrix< T, Rows, Cols > &rhs) TVMET_CXX_ALWAYS_INLINE
template<class T, std::size_t Rows, std::size_t Cols>
XprMatrix< XprBinOp< Fcnl_bitxor<
T, int >, MatrixConstReference<
T, Rows, Cols >, XprLiteral<
int > >, Rows, Cols > 
operator^ (const Matrix< T, Rows, Cols > &lhs, int rhs) TVMET_CXX_ALWAYS_INLINE
template<class T, std::size_t Rows, std::size_t Cols>
XprMatrix< XprBinOp< Fcnl_bitxor<
int, T >, XprLiteral< int >,
MatrixConstReference< T,
Rows, Cols > >, Rows, Cols > 
operator^ (int lhs, const Matrix< T, Rows, Cols > &rhs) TVMET_CXX_ALWAYS_INLINE
template<class T, std::size_t Rows, std::size_t Cols>
XprMatrix< XprBinOp< Fcnl_bitand<
T, int >, MatrixConstReference<
T, Rows, Cols >, XprLiteral<
int > >, Rows, Cols > 
operator & (const Matrix< T, Rows, Cols > &lhs, int rhs) TVMET_CXX_ALWAYS_INLINE
template<class T, std::size_t Rows, std::size_t Cols>
XprMatrix< XprBinOp< Fcnl_bitand<
int, T >, XprLiteral< int >,
MatrixConstReference< T,
Rows, Cols > >, Rows, Cols > 
operator & (int lhs, const Matrix< T, Rows, Cols > &rhs) TVMET_CXX_ALWAYS_INLINE
template<class T, std::size_t Rows, std::size_t Cols>
XprMatrix< XprBinOp< Fcnl_bitor<
T, int >, MatrixConstReference<
T, Rows, Cols >, XprLiteral<
int > >, Rows, Cols > 
operator| (const Matrix< T, Rows, Cols > &lhs, int rhs) TVMET_CXX_ALWAYS_INLINE
template<class T, std::size_t Rows, std::size_t Cols>
XprMatrix< XprBinOp< Fcnl_bitor<
int, T >, XprLiteral< int >,
MatrixConstReference< T,
Rows, Cols > >, Rows, Cols > 
operator| (int lhs, const Matrix< T, Rows, Cols > &rhs) TVMET_CXX_ALWAYS_INLINE
template<class T, std::size_t Rows, std::size_t Cols>
XprMatrix< XprBinOp< Fcnl_shl<
T, int >, MatrixConstReference<
T, Rows, Cols >, XprLiteral<
int > >, Rows, Cols > 
operator<< (const Matrix< T, Rows, Cols > &lhs, int rhs) TVMET_CXX_ALWAYS_INLINE
template<class T, std::size_t Rows, std::size_t Cols>
XprMatrix< XprBinOp< Fcnl_shl<
int, T >, XprLiteral< int >,
MatrixConstReference< T,
Rows, Cols > >, Rows, Cols > 
operator<< (int lhs, const Matrix< T, Rows, Cols > &rhs) TVMET_CXX_ALWAYS_INLINE
template<class T, std::size_t Rows, std::size_t Cols>
XprMatrix< XprBinOp< Fcnl_shr<
T, int >, MatrixConstReference<
T, Rows, Cols >, XprLiteral<
int > >, Rows, Cols > 
operator>> (const Matrix< T, Rows, Cols > &lhs, int rhs) TVMET_CXX_ALWAYS_INLINE
template<class T, std::size_t Rows, std::size_t Cols>
XprMatrix< XprBinOp< Fcnl_shr<
int, T >, XprLiteral< int >,
MatrixConstReference< T,
Rows, Cols > >, Rows, Cols > 
operator>> (int lhs, const Matrix< T, Rows, Cols > &rhs) TVMET_CXX_ALWAYS_INLINE
template<class T1, class T2, std::size_t Sz>
XprVector< XprBinOp< Fcnl_div<
T1, T2 >, VectorConstReference<
T1, Sz >, VectorConstReference<
T2, Sz > >, Sz > 
div (const Vector< T1, Sz > &lhs, const Vector< T2, Sz > &rhs) TVMET_CXX_ALWAYS_INLINE
template<class E, class T, std::size_t Sz>
XprVector< XprBinOp< Fcnl_div<
typename E::value_type, T >,
XprVector< E, Sz >, VectorConstReference<
T, Sz > >, Sz > 
div (const XprVector< E, Sz > &lhs, const Vector< T, Sz > &rhs) TVMET_CXX_ALWAYS_INLINE
template<class E, class T, std::size_t Sz>
XprVector< XprBinOp< Fcnl_div<
T, typename E::value_type >,
VectorConstReference< T,
Sz >, XprVector< E, Sz > >,
Sz > 
div (const Vector< T, Sz > &lhs, const XprVector< E, Sz > &rhs) TVMET_CXX_ALWAYS_INLINE
template<class T1, class T2, std::size_t Sz>
Vector< T1, Sz > & operator/= (Vector< T1, Sz > &lhs, const Vector< T2, Sz > &rhs) TVMET_CXX_ALWAYS_INLINE
template<class T, class E, std::size_t Sz>
Vector< T, Sz > & operator/= (Vector< T, Sz > &lhs, const XprVector< E, Sz > &rhs) TVMET_CXX_ALWAYS_INLINE
template<class T1, class T2, std::size_t Sz>
Vector< T1, Sz > & operator%= (Vector< T1, Sz > &lhs, const Vector< T2, Sz > &rhs) TVMET_CXX_ALWAYS_INLINE
template<class T, class E, std::size_t Sz>
Vector< T, Sz > & operator%= (Vector< T, Sz > &lhs, const XprVector< E, Sz > &rhs) TVMET_CXX_ALWAYS_INLINE
template<class T1, class T2, std::size_t Sz>
Vector< T1, Sz > & operator^= (Vector< T1, Sz > &lhs, const Vector< T2, Sz > &rhs) TVMET_CXX_ALWAYS_INLINE
template<class T, class E, std::size_t Sz>
Vector< T, Sz > & operator^= (Vector< T, Sz > &lhs, const XprVector< E, Sz > &rhs) TVMET_CXX_ALWAYS_INLINE
template<class T1, class T2, std::size_t Sz>
Vector< T1, Sz > & operator &= (Vector< T1, Sz > &lhs, const Vector< T2, Sz > &rhs) TVMET_CXX_ALWAYS_INLINE
template<class T, class E, std::size_t Sz>
Vector< T, Sz > & operator &= (Vector< T, Sz > &lhs, const XprVector< E, Sz > &rhs) TVMET_CXX_ALWAYS_INLINE
template<class T1, class T2, std::size_t Sz>
Vector< T1, Sz > & operator|= (Vector< T1, Sz > &lhs, const Vector< T2, Sz > &rhs) TVMET_CXX_ALWAYS_INLINE
template<class T, class E, std::size_t Sz>
Vector< T, Sz > & operator|= (Vector< T, Sz > &lhs, const XprVector< E, Sz > &rhs) TVMET_CXX_ALWAYS_INLINE
template<class T1, class T2, std::size_t Sz>
Vector< T1, Sz > & operator<<= (Vector< T1, Sz > &lhs, const Vector< T2, Sz > &rhs) TVMET_CXX_ALWAYS_INLINE
template<class T, class E, std::size_t Sz>
Vector< T, Sz > & operator<<= (Vector< T, Sz > &lhs, const XprVector< E, Sz > &rhs) TVMET_CXX_ALWAYS_INLINE
template<class T1, class T2, std::size_t Sz>
Vector< T1, Sz > & operator>>= (Vector< T1, Sz > &lhs, const Vector< T2, Sz > &rhs) TVMET_CXX_ALWAYS_INLINE
template<class T, class E, std::size_t Sz>
Vector< T, Sz > & operator>>= (Vector< T, Sz > &lhs, const XprVector< E, Sz > &rhs) TVMET_CXX_ALWAYS_INLINE
template<class T1, class T2, std::size_t Sz>
XprVector< XprBinOp< Fcnl_div<
T1, T2 >, VectorConstReference<
T1, Sz >, VectorConstReference<
T2, Sz > >, Sz > 
operator/ (const Vector< T1, Sz > &lhs, const Vector< T2, Sz > &rhs) TVMET_CXX_ALWAYS_INLINE
template<class E, class T, std::size_t Sz>
XprVector< XprBinOp< Fcnl_div<
typename E::value_type, T >,
XprVector< E, Sz >, VectorConstReference<
T, Sz > >, Sz > 
operator/ (const XprVector< E, Sz > &lhs, const Vector< T, Sz > &rhs) TVMET_CXX_ALWAYS_INLINE
template<class E, class T, std::size_t Sz>
XprVector< XprBinOp< Fcnl_div<
T, typename E::value_type >,
VectorConstReference< T,
Sz >, XprVector< E, Sz > >,
Sz > 
operator/ (const Vector< T, Sz > &lhs, const XprVector< E, Sz > &rhs) TVMET_CXX_ALWAYS_INLINE
template<class T1, class T2, std::size_t Sz>
XprVector< XprBinOp< Fcnl_mod<
T1, T2 >, VectorConstReference<
T1, Sz >, VectorConstReference<
T2, Sz > >, Sz > 
operator% (const Vector< T1, Sz > &lhs, const Vector< T2, Sz > &rhs) TVMET_CXX_ALWAYS_INLINE
template<class E, class T, std::size_t Sz>
XprVector< XprBinOp< Fcnl_mod<
typename E::value_type, T >,
XprVector< E, Sz >, VectorConstReference<
T, Sz > >, Sz > 
operator% (const XprVector< E, Sz > &lhs, const Vector< T, Sz > &rhs) TVMET_CXX_ALWAYS_INLINE
template<class E, class T, std::size_t Sz>
XprVector< XprBinOp< Fcnl_mod<
T, typename E::value_type >,
VectorConstReference< T,
Sz >, XprVector< E, Sz > >,
Sz > 
operator% (const Vector< T, Sz > &lhs, const XprVector< E, Sz > &rhs) TVMET_CXX_ALWAYS_INLINE
template<class T1, class T2, std::size_t Sz>
XprVector< XprBinOp< Fcnl_bitxor<
T1, T2 >, VectorConstReference<
T1, Sz >, VectorConstReference<
T2, Sz > >, Sz > 
operator^ (const Vector< T1, Sz > &lhs, const Vector< T2, Sz > &rhs) TVMET_CXX_ALWAYS_INLINE
template<class E, class T, std::size_t Sz>
XprVector< XprBinOp< Fcnl_bitxor<
typename E::value_type, T >,
XprVector< E, Sz >, VectorConstReference<
T, Sz > >, Sz > 
operator^ (const XprVector< E, Sz > &lhs, const Vector< T, Sz > &rhs) TVMET_CXX_ALWAYS_INLINE
template<class E, class T, std::size_t Sz>
XprVector< XprBinOp< Fcnl_bitxor<
T, typename E::value_type >,
VectorConstReference< T,
Sz >, XprVector< E, Sz > >,
Sz > 
operator^ (const Vector< T, Sz > &lhs, const XprVector< E, Sz > &rhs) TVMET_CXX_ALWAYS_INLINE
template<class T1, class T2, std::size_t Sz>
XprVector< XprBinOp< Fcnl_bitand<
T1, T2 >, VectorConstReference<
T1, Sz >, VectorConstReference<
T2, Sz > >, Sz > 
operator & (const Vector< T1, Sz > &lhs, const Vector< T2, Sz > &rhs) TVMET_CXX_ALWAYS_INLINE
template<class E, class T, std::size_t Sz>
XprVector< XprBinOp< Fcnl_bitand<
typename E::value_type, T >,
XprVector< E, Sz >, VectorConstReference<
T, Sz > >, Sz > 
operator & (const XprVector< E, Sz > &lhs, const Vector< T, Sz > &rhs) TVMET_CXX_ALWAYS_INLINE
template<class E, class T, std::size_t Sz>
XprVector< XprBinOp< Fcnl_bitand<
T, typename E::value_type >,
VectorConstReference< T,
Sz >, XprVector< E, Sz > >,
Sz > 
operator & (const Vector< T, Sz > &lhs, const XprVector< E, Sz > &rhs) TVMET_CXX_ALWAYS_INLINE
template<class T1, class T2, std::size_t Sz>
XprVector< XprBinOp< Fcnl_bitor<
T1, T2 >, VectorConstReference<
T1, Sz >, VectorConstReference<
T2, Sz > >, Sz > 
operator| (const Vector< T1, Sz > &lhs, const Vector< T2, Sz > &rhs) TVMET_CXX_ALWAYS_INLINE
template<class E, class T, std::size_t Sz>
XprVector< XprBinOp< Fcnl_bitor<
typename E::value_type, T >,
XprVector< E, Sz >, VectorConstReference<
T, Sz > >, Sz > 
operator| (const XprVector< E, Sz > &lhs, const Vector< T, Sz > &rhs) TVMET_CXX_ALWAYS_INLINE
template<class E, class T, std::size_t Sz>
XprVector< XprBinOp< Fcnl_bitor<
T, typename E::value_type >,
VectorConstReference< T,
Sz >, XprVector< E, Sz > >,
Sz > 
operator| (const Vector< T, Sz > &lhs, const XprVector< E, Sz > &rhs) TVMET_CXX_ALWAYS_INLINE
template<class T1, class T2, std::size_t Sz>
XprVector< XprBinOp< Fcnl_shl<
T1, T2 >, VectorConstReference<
T1, Sz >, VectorConstReference<
T2, Sz > >, Sz > 
operator<< (const Vector< T1, Sz > &lhs, const Vector< T2, Sz > &rhs) TVMET_CXX_ALWAYS_INLINE
template<class E, class T, std::size_t Sz>
XprVector< XprBinOp< Fcnl_shl<
typename E::value_type, T >,
XprVector< E, Sz >, VectorConstReference<
T, Sz > >, Sz > 
operator<< (const XprVector< E, Sz > &lhs, const Vector< T, Sz > &rhs) TVMET_CXX_ALWAYS_INLINE
template<class E, class T, std::size_t Sz>
XprVector< XprBinOp< Fcnl_shl<
T, typename E::value_type >,
VectorConstReference< T,
Sz >, XprVector< E, Sz > >,
Sz > 
operator<< (const Vector< T, Sz > &lhs, const XprVector< E, Sz > &rhs) TVMET_CXX_ALWAYS_INLINE
template<class T1, class T2, std::size_t Sz>
XprVector< XprBinOp< Fcnl_shr<
T1, T2 >, VectorConstReference<
T1, Sz >, VectorConstReference<
T2, Sz > >, Sz > 
operator>> (const Vector< T1, Sz > &lhs, const Vector< T2, Sz > &rhs) TVMET_CXX_ALWAYS_INLINE
template<class E, class T, std::size_t Sz>
XprVector< XprBinOp< Fcnl_shr<
typename E::value_type, T >,
XprVector< E, Sz >, VectorConstReference<
T, Sz > >, Sz > 
operator>> (const XprVector< E, Sz > &lhs, const Vector< T, Sz > &rhs) TVMET_CXX_ALWAYS_INLINE
template<class E, class T, std::size_t Sz>
XprVector< XprBinOp< Fcnl_shr<
T, typename E::value_type >,
VectorConstReference< T,
Sz >, XprVector< E, Sz > >,
Sz > 
operator>> (const Vector< T, Sz > &lhs, const XprVector< E, Sz > &rhs) TVMET_CXX_ALWAYS_INLINE
template<class T, std::size_t Sz>
XprVector< XprBinOp< Fcnl_mod<
T, int >, VectorConstReference<
T, Sz >, XprLiteral< int > >,
Sz > 
operator% (const Vector< T, Sz > &lhs, int rhs) TVMET_CXX_ALWAYS_INLINE
template<class T, std::size_t Sz>
XprVector< XprBinOp< Fcnl_mod<
int, T >, XprLiteral< int >,
VectorConstReference< T,
Sz > >, Sz > 
operator% (int lhs, const Vector< T, Sz > &rhs) TVMET_CXX_ALWAYS_INLINE
template<class T, std::size_t Sz>
XprVector< XprBinOp< Fcnl_bitxor<
T, int >, VectorConstReference<
T, Sz >, XprLiteral< int > >,
Sz > 
operator^ (const Vector< T, Sz > &lhs, int rhs) TVMET_CXX_ALWAYS_INLINE
template<class T, std::size_t Sz>
XprVector< XprBinOp< Fcnl_bitxor<
int, T >, XprLiteral< int >,
VectorConstReference< T,
Sz > >, Sz > 
operator^ (int lhs, const Vector< T, Sz > &rhs) TVMET_CXX_ALWAYS_INLINE
template<class T, std::size_t Sz>
XprVector< XprBinOp< Fcnl_bitand<
T, int >, VectorConstReference<
T, Sz >, XprLiteral< int > >,
Sz > 
operator & (const Vector< T, Sz > &lhs, int rhs) TVMET_CXX_ALWAYS_INLINE
template<class T, std::size_t Sz>
XprVector< XprBinOp< Fcnl_bitand<
int, T >, XprLiteral< int >,
VectorConstReference< T,
Sz > >, Sz > 
operator & (int lhs, const Vector< T, Sz > &rhs) TVMET_CXX_ALWAYS_INLINE
template<class T, std::size_t Sz>
XprVector< XprBinOp< Fcnl_bitor<
T, int >, VectorConstReference<
T, Sz >, XprLiteral< int > >,
Sz > 
operator| (const Vector< T, Sz > &lhs, int rhs) TVMET_CXX_ALWAYS_INLINE
template<class T, std::size_t Sz>
XprVector< XprBinOp< Fcnl_bitor<
int, T >, XprLiteral< int >,
VectorConstReference< T,
Sz > >, Sz > 
operator| (int lhs, const Vector< T, Sz > &rhs) TVMET_CXX_ALWAYS_INLINE
template<class T, std::size_t Sz>
XprVector< XprBinOp< Fcnl_shl<
T, int >, VectorConstReference<
T, Sz >, XprLiteral< int > >,
Sz > 
operator<< (const Vector< T, Sz > &lhs, int rhs) TVMET_CXX_ALWAYS_INLINE
template<class T, std::size_t Sz>
XprVector< XprBinOp< Fcnl_shl<
int, T >, XprLiteral< int >,
VectorConstReference< T,
Sz > >, Sz > 
operator<< (int lhs, const Vector< T, Sz > &rhs) TVMET_CXX_ALWAYS_INLINE
template<class T, std::size_t Sz>
XprVector< XprBinOp< Fcnl_shr<
T, int >, VectorConstReference<
T, Sz >, XprLiteral< int > >,
Sz > 
operator>> (const Vector< T, Sz > &lhs, int rhs) TVMET_CXX_ALWAYS_INLINE
template<class T, std::size_t Sz>
XprVector< XprBinOp< Fcnl_shr<
int, T >, XprLiteral< int >,
VectorConstReference< T,
Sz > >, Sz > 
operator>> (int lhs, const Vector< T, Sz > &rhs) TVMET_CXX_ALWAYS_INLINE
template<class E1, class E2, std::size_t Rows, std::size_t Cols>
XprMatrix< XprBinOp< Fcnl_mul<
typename E1::value_type,
typename E2::value_type >,
XprMatrix< E1, Rows, Cols >,
XprMatrix< E2, Rows, Cols > >,
Rows, Cols > 
mul (const XprMatrix< E1, Rows, Cols > &lhs, const XprMatrix< E2, Rows, Cols > &rhs) TVMET_CXX_ALWAYS_INLINE
template<class E1, class E2, std::size_t Rows, std::size_t Cols>
XprMatrix< XprBinOp< Fcnl_div<
typename E1::value_type,
typename E2::value_type >,
XprMatrix< E1, Rows, Cols >,
XprMatrix< E2, Rows, Cols > >,
Rows, Cols > 
div (const XprMatrix< E1, Rows, Cols > &lhs, const XprMatrix< E2, Rows, Cols > &rhs) TVMET_CXX_ALWAYS_INLINE
template<class E1, std::size_t Rows1, std::size_t Cols1, class E2>
XprMatrix< XprBinOp< Fcnl_mul<
typename E1::value_type,
typename E2::value_type >,
XprMatrix< E1, Rows1, Cols1 >,
XprMatrix< E2, Rows1, Cols1 > >,
Rows1, Cols1 > 
operator * (const XprMatrix< E1, Rows1, Cols1 > &lhs, const XprMatrix< E2, Rows1, Cols1 > &rhs) TVMET_CXX_ALWAYS_INLINE
template<class E1, std::size_t Rows1, std::size_t Cols1, class E2>
XprMatrix< XprBinOp< Fcnl_div<
typename E1::value_type,
typename E2::value_type >,
XprMatrix< E1, Rows1, Cols1 >,
XprMatrix< E2, Rows1, Cols1 > >,
Rows1, Cols1 > 
operator/ (const XprMatrix< E1, Rows1, Cols1 > &lhs, const XprMatrix< E2, Rows1, Cols1 > &rhs) TVMET_CXX_ALWAYS_INLINE
template<class E1, std::size_t Rows, std::size_t Cols, class E2>
XprMatrix< XprBinOp< Fcnl_mod<
typename E1::value_type,
typename E2::value_type >,
XprMatrix< E1, Rows, Cols >,
XprMatrix< E2, Rows, Cols > >,
Rows, Cols > 
operator% (const XprMatrix< E1, Rows, Cols > &lhs, const XprMatrix< E2, Rows, Cols > &rhs) TVMET_CXX_ALWAYS_INLINE
template<class E1, std::size_t Rows, std::size_t Cols, class E2>
XprMatrix< XprBinOp< Fcnl_bitxor<
typename E1::value_type,
typename E2::value_type >,
XprMatrix< E1, Rows, Cols >,
XprMatrix< E2, Rows, Cols > >,
Rows, Cols > 
operator^ (const XprMatrix< E1, Rows, Cols > &lhs, const XprMatrix< E2, Rows, Cols > &rhs) TVMET_CXX_ALWAYS_INLINE
template<class E1, std::size_t Rows, std::size_t Cols, class E2>
XprMatrix< XprBinOp< Fcnl_bitand<
typename E1::value_type,
typename E2::value_type >,
XprMatrix< E1, Rows, Cols >,
XprMatrix< E2, Rows, Cols > >,
Rows, Cols > 
operator & (const XprMatrix< E1, Rows, Cols > &lhs, const XprMatrix< E2, Rows, Cols > &rhs) TVMET_CXX_ALWAYS_INLINE
template<class E1, std::size_t Rows, std::size_t Cols, class E2>
XprMatrix< XprBinOp< Fcnl_bitor<
typename E1::value_type,
typename E2::value_type >,
XprMatrix< E1, Rows, Cols >,
XprMatrix< E2, Rows, Cols > >,
Rows, Cols > 
operator| (const XprMatrix< E1, Rows, Cols > &lhs, const XprMatrix< E2, Rows, Cols > &rhs) TVMET_CXX_ALWAYS_INLINE
template<class E1, std::size_t Rows, std::size_t Cols, class E2>
XprMatrix< XprBinOp< Fcnl_shl<
typename E1::value_type,
typename E2::value_type >,
XprMatrix< E1, Rows, Cols >,
XprMatrix< E2, Rows, Cols > >,
Rows, Cols > 
operator<< (const XprMatrix< E1, Rows, Cols > &lhs, const XprMatrix< E2, Rows, Cols > &rhs) TVMET_CXX_ALWAYS_INLINE
template<class E1, std::size_t Rows, std::size_t Cols, class E2>
XprMatrix< XprBinOp< Fcnl_shr<
typename E1::value_type,
typename E2::value_type >,
XprMatrix< E1, Rows, Cols >,
XprMatrix< E2, Rows, Cols > >,
Rows, Cols > 
operator>> (const XprMatrix< E1, Rows, Cols > &lhs, const XprMatrix< E2, Rows, Cols > &rhs) TVMET_CXX_ALWAYS_INLINE
template<class E, std::size_t Rows, std::size_t Cols>
XprMatrix< XprBinOp< Fcnl_mod<
typename E::value_type, int >,
XprMatrix< E, Rows, Cols >,
XprLiteral< int > >, Rows,
Cols > 
operator% (const XprMatrix< E, Rows, Cols > &lhs, int rhs) TVMET_CXX_ALWAYS_INLINE
template<class E, std::size_t Rows, std::size_t Cols>
XprMatrix< XprBinOp< Fcnl_mod<
int, typename E::value_type >,
XprLiteral< int >, XprMatrix<
E, Rows, Cols > >, Rows,
Cols > 
operator% (int lhs, const XprMatrix< E, Rows, Cols > &rhs) TVMET_CXX_ALWAYS_INLINE
template<class E, std::size_t Rows, std::size_t Cols>
XprMatrix< XprBinOp< Fcnl_bitxor<
typename E::value_type, int >,
XprMatrix< E, Rows, Cols >,
XprLiteral< int > >, Rows,
Cols > 
operator^ (const XprMatrix< E, Rows, Cols > &lhs, int rhs) TVMET_CXX_ALWAYS_INLINE
template<class E, std::size_t Rows, std::size_t Cols>
XprMatrix< XprBinOp< Fcnl_bitxor<
int, typename E::value_type >,
XprLiteral< int >, XprMatrix<
E, Rows, Cols > >, Rows,
Cols > 
operator^ (int lhs, const XprMatrix< E, Rows, Cols > &rhs) TVMET_CXX_ALWAYS_INLINE
template<class E, std::size_t Rows, std::size_t Cols>
XprMatrix< XprBinOp< Fcnl_bitand<
typename E::value_type, int >,
XprMatrix< E, Rows, Cols >,
XprLiteral< int > >, Rows,
Cols > 
operator & (const XprMatrix< E, Rows, Cols > &lhs, int rhs) TVMET_CXX_ALWAYS_INLINE
template<class E, std::size_t Rows, std::size_t Cols>
XprMatrix< XprBinOp< Fcnl_bitand<
int, typename E::value_type >,
XprLiteral< int >, XprMatrix<
E, Rows, Cols > >, Rows,
Cols > 
operator & (int lhs, const XprMatrix< E, Rows, Cols > &rhs) TVMET_CXX_ALWAYS_INLINE
template<class E, std::size_t Rows, std::size_t Cols>
XprMatrix< XprBinOp< Fcnl_bitor<
typename E::value_type, int >,
XprMatrix< E, Rows, Cols >,
XprLiteral< int > >, Rows,
Cols > 
operator| (const XprMatrix< E, Rows, Cols > &lhs, int rhs) TVMET_CXX_ALWAYS_INLINE
template<class E, std::size_t Rows, std::size_t Cols>
XprMatrix< XprBinOp< Fcnl_bitor<
int, typename E::value_type >,
XprLiteral< int >, XprMatrix<
E, Rows, Cols > >, Rows,
Cols > 
operator| (int lhs, const XprMatrix< E, Rows, Cols > &rhs) TVMET_CXX_ALWAYS_INLINE
template<class E, std::size_t Rows, std::size_t Cols>
XprMatrix< XprBinOp< Fcnl_shl<
typename E::value_type, int >,
XprMatrix< E, Rows, Cols >,
XprLiteral< int > >, Rows,
Cols > 
operator<< (const XprMatrix< E, Rows, Cols > &lhs, int rhs) TVMET_CXX_ALWAYS_INLINE
template<class E, std::size_t Rows, std::size_t Cols>
XprMatrix< XprBinOp< Fcnl_shl<
int, typename E::value_type >,
XprLiteral< int >, XprMatrix<
E, Rows, Cols > >, Rows,
Cols > 
operator<< (int lhs, const XprMatrix< E, Rows, Cols > &rhs) TVMET_CXX_ALWAYS_INLINE
template<class E, std::size_t Rows, std::size_t Cols>
XprMatrix< XprBinOp< Fcnl_shr<
typename E::value_type, int >,
XprMatrix< E, Rows, Cols >,
XprLiteral< int > >, Rows,
Cols > 
operator>> (const XprMatrix< E, Rows, Cols > &lhs, int rhs) TVMET_CXX_ALWAYS_INLINE
template<class E, std::size_t Rows, std::size_t Cols>
XprMatrix< XprBinOp< Fcnl_shr<
int, typename E::value_type >,
XprLiteral< int >, XprMatrix<
E, Rows, Cols > >, Rows,
Cols > 
operator>> (int lhs, const XprMatrix< E, Rows, Cols > &rhs) TVMET_CXX_ALWAYS_INLINE
template<class E1, class E2, std::size_t Sz>
XprVector< XprBinOp< Fcnl_div<
typename E1::value_type,
typename E2::value_type >,
XprVector< E1, Sz >, XprVector<
E2, Sz > >, Sz > 
div (const XprVector< E1, Sz > &lhs, const XprVector< E2, Sz > &rhs) TVMET_CXX_ALWAYS_INLINE
template<class E1, class E2, std::size_t Sz>
XprVector< XprBinOp< Fcnl_div<
typename E1::value_type,
typename E2::value_type >,
XprVector< E1, Sz >, XprVector<
E2, Sz > >, Sz > 
operator/ (const XprVector< E1, Sz > &lhs, const XprVector< E2, Sz > &rhs) TVMET_CXX_ALWAYS_INLINE
template<class E1, class E2, std::size_t Sz>
XprVector< XprBinOp< Fcnl_mod<
typename E1::value_type,
typename E2::value_type >,
XprVector< E1, Sz >, XprVector<
E2, Sz > >, Sz > 
operator% (const XprVector< E1, Sz > &lhs, const XprVector< E2, Sz > &rhs) TVMET_CXX_ALWAYS_INLINE
template<class E1, class E2, std::size_t Sz>
XprVector< XprBinOp< Fcnl_bitxor<
typename E1::value_type,
typename E2::value_type >,
XprVector< E1, Sz >, XprVector<
E2, Sz > >, Sz > 
operator^ (const XprVector< E1, Sz > &lhs, const XprVector< E2, Sz > &rhs) TVMET_CXX_ALWAYS_INLINE
template<class E1, class E2, std::size_t Sz>
XprVector< XprBinOp< Fcnl_bitand<
typename E1::value_type,
typename E2::value_type >,
XprVector< E1, Sz >, XprVector<
E2, Sz > >, Sz > 
operator & (const XprVector< E1, Sz > &lhs, const XprVector< E2, Sz > &rhs) TVMET_CXX_ALWAYS_INLINE
template<class E1, class E2, std::size_t Sz>
XprVector< XprBinOp< Fcnl_bitor<
typename E1::value_type,
typename E2::value_type >,
XprVector< E1, Sz >, XprVector<
E2, Sz > >, Sz > 
operator| (const XprVector< E1, Sz > &lhs, const XprVector< E2, Sz > &rhs) TVMET_CXX_ALWAYS_INLINE
template<class E1, class E2, std::size_t Sz>
XprVector< XprBinOp< Fcnl_shl<
typename E1::value_type,
typename E2::value_type >,
XprVector< E1, Sz >, XprVector<
E2, Sz > >, Sz > 
operator<< (const XprVector< E1, Sz > &lhs, const XprVector< E2, Sz > &rhs) TVMET_CXX_ALWAYS_INLINE
template<class E1, class E2, std::size_t Sz>