diff options
author | 2016-02-21 22:43:37 -0800 | |
---|---|---|
committer | 2016-02-21 22:43:37 -0800 | |
commit | 257b640463401ce042ffd223083d443b9a3690fa (patch) | |
tree | 0eb6c6711ed0f86c2f17ec6cecbae443a5d7fcb0 /unsupported/Eigen | |
parent | 584832cb3c46126697844d0afb9ef56b8da9f049 (diff) |
Fixed compilation warning generated by clang
Diffstat (limited to 'unsupported/Eigen')
-rw-r--r-- | unsupported/Eigen/CXX11/src/Tensor/TensorConversion.h | 18 |
1 files changed, 13 insertions, 5 deletions
diff --git a/unsupported/Eigen/CXX11/src/Tensor/TensorConversion.h b/unsupported/Eigen/CXX11/src/Tensor/TensorConversion.h index 21bb91d69..4e87813a9 100644 --- a/unsupported/Eigen/CXX11/src/Tensor/TensorConversion.h +++ b/unsupported/Eigen/CXX11/src/Tensor/TensorConversion.h @@ -165,6 +165,18 @@ class TensorConversionOp : public TensorBase<TensorConversionOp<TargetType, XprT typename XprType::Nested m_xpr; }; +template <bool SameType, typename Eval, typename Scalar> struct ConversionSubExprEval { + EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE static bool run(Eval& impl, Scalar*) { + impl.evalSubExprsIfNeeded(NULL); + return true; + } +}; + +template <typename Eval, typename Scalar> struct ConversionSubExprEval<true, Eval, Scalar> { + EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE static bool run(Eval& impl, Scalar* data) { + return impl.evalSubExprsIfNeeded(data); + } +}; @@ -197,11 +209,7 @@ struct TensorEvaluator<const TensorConversionOp<TargetType, ArgType>, Device> EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE bool evalSubExprsIfNeeded(Scalar* data) { - if (internal::is_same<TargetType, SrcType>::value) { - return m_impl.evalSubExprsIfNeeded((SrcType*)data); - } - m_impl.evalSubExprsIfNeeded(NULL); - return true; + return ConversionSubExprEval<internal::is_same<TargetType, SrcType>::value, TensorEvaluator<ArgType, Device>, Scalar>::run(m_impl, data); } EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE void cleanup() |