79 BinaryOp, LhsType, RhsType,
80 typename internal::cwise_promote_storage_type<typename internal::traits<LhsType>::StorageKind,
81 typename internal::traits<RhsType>::StorageKind,
87 typedef typename internal::remove_all<BinaryOp>::type Functor;
88 typedef typename internal::remove_all<LhsType>::type Lhs;
89 typedef typename internal::remove_all<RhsType>::type Rhs;
92 BinaryOp, LhsType, RhsType,
95 BinaryOp>::ret>::Base Base;
100 typedef typename internal::remove_reference<LhsNested>::type _LhsNested;
101 typedef typename internal::remove_reference<RhsNested>::type _RhsNested;
103#if EIGEN_COMP_MSVC && EIGEN_HAS_CXX11
109 EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
110 CwiseBinaryOp(
const Lhs& aLhs,
const Rhs& aRhs,
const BinaryOp& func = BinaryOp())
111 : m_lhs(aLhs), m_rhs(aRhs), m_functor(func)
113 EIGEN_CHECK_BINARY_COMPATIBILIY(BinaryOp,
typename Lhs::Scalar,
typename Rhs::Scalar);
115 EIGEN_STATIC_ASSERT_SAME_MATRIX_SIZE(Lhs, Rhs)
116 eigen_assert(aLhs.rows() == aRhs.rows() && aLhs.cols() == aRhs.cols());
119 EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE EIGEN_CONSTEXPR
120 Index rows()
const EIGEN_NOEXCEPT {
124 EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE EIGEN_CONSTEXPR
125 Index cols()
const EIGEN_NOEXCEPT {
131 EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
132 const _LhsNested&
lhs()
const {
return m_lhs; }
134 EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
135 const _RhsNested&
rhs()
const {
return m_rhs; }
137 EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE
138 const BinaryOp&
functor()
const {
return m_functor; }
143 const BinaryOp m_functor;