12 #ifndef EIGEN_CWISE_TERNARY_OP_H    13 #define EIGEN_CWISE_TERNARY_OP_H    18 template <
typename TernaryOp, 
typename Arg1, 
typename Arg2, 
typename Arg3>
    35       const typename Arg1::Scalar&, 
const typename Arg2::Scalar&,
    36       const typename Arg3::Scalar&)>::type 
Scalar;
    51 template <
typename TernaryOp, 
typename Arg1, 
typename Arg2, 
typename Arg3,
    82 template <
typename TernaryOp, 
typename Arg1Type, 
typename Arg2Type,
    85                            TernaryOp, Arg1Type, Arg2Type, Arg3Type,
    86                            typename internal::traits<Arg1Type>::StorageKind>,
    95       TernaryOp, Arg1Type, Arg2Type, Arg3Type,
   109                                      const TernaryOp& func = TernaryOp())
   110       : m_arg1(a1), m_arg2(a2), m_arg3(a3), m_functor(func) {
   119                         STORAGE_KIND_MUST_MATCH)
   123                         STORAGE_KIND_MUST_MATCH)
   125     eigen_assert(a1.rows() == a2.rows() && a1.cols() == a2.cols() &&
   126                  a1.rows() == a3.rows() && a1.cols() == a3.cols());
   134                 RowsAtCompileTime == 
Dynamic &&
   137       return m_arg3.rows();
   139                      RowsAtCompileTime == 
Dynamic &&
   142       return m_arg2.rows();
   144       return m_arg1.rows();
   151                 ColsAtCompileTime == 
Dynamic &&
   154       return m_arg3.cols();
   156                      ColsAtCompileTime == 
Dynamic &&
   159       return m_arg2.cols();
   161       return m_arg1.cols();
   175   const TernaryOp& 
functor()
 const { 
return m_functor; }
   185 template <
typename TernaryOp, 
typename Arg1, 
typename Arg2, 
typename Arg3,
   186           typename StorageKind>
   189           CwiseTernaryOp<TernaryOp, Arg1, Arg2, Arg3> >::type {
   197 #endif  // EIGEN_CWISE_TERNARY_OP_H result_of< TernaryOp(const typename Arg1::Scalar &, const typename Arg2::Scalar &, const typename Arg3::Scalar &)>::type Scalar
#define EIGEN_GENERIC_PUBLIC_INTERFACE(Derived)
#define EIGEN_STRONG_INLINE
internal::remove_reference< Arg3Nested >::type _Arg3Nested
remove_reference< Arg1Nested >::type _Arg1Nested
EIGEN_DEVICE_FUNC const TernaryOp & functor() const
remove_all< Arg1 >::type Ancestor
internal::remove_all< Arg1Type >::type Arg1
#define EIGEN_STATIC_ASSERT(CONDITION, MSG)
const unsigned int RowMajorBit
internal::remove_reference< Arg2Nested >::type _Arg2Nested
internal::traits< Arg1 >::StorageIndex StorageIndex
const TernaryOp m_functor
EIGEN_DEFAULT_DENSE_INDEX_TYPE Index
The Index type as used for the API. 
Generic expression where a coefficient-wise ternary operator is applied to two expressions. 
EIGEN_DEVICE_FUNC const _Arg1Nested & arg1() const
internal::remove_all< Arg2Type >::type Arg2
internal::remove_all< Arg3Type >::type Arg3
internal::remove_reference< Arg1Nested >::type _Arg1Nested
EIGEN_DEVICE_FUNC const _Arg3Nested & arg3() const
internal::traits< Arg1 >::StorageKind StorageKind
internal::generic_xpr_base< CwiseTernaryOp< TernaryOp, Arg1, Arg2, Arg3 > >::type Base
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Index cols() const
EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE Index rows() const
traits< Ancestor >::XprKind XprKind
remove_reference< Arg3Nested >::type _Arg3Nested
EIGEN_DEVICE_FUNC const _Arg2Nested & arg2() const
remove_reference< Arg2Nested >::type _Arg2Nested
CwiseTernaryOpImpl< TernaryOp, Arg1Type, Arg2Type, Arg3Type, typename internal::traits< Arg1Type >::StorageKind >::Base Base
#define EIGEN_STATIC_ASSERT_SAME_MATRIX_SIZE(TYPE0, TYPE1)