From 53432a17b202b7119e9abe357361cc5000ba053c Mon Sep 17 00:00:00 2001 From: Benoit Steiner Date: Fri, 6 Nov 2015 10:26:19 -0800 Subject: Added static assertions to avoid misuses of padding, broadcasting and concatenation ops. --- unsupported/Eigen/CXX11/src/Tensor/TensorPadding.h | 5 +++++ 1 file changed, 5 insertions(+) (limited to 'unsupported/Eigen/CXX11/src/Tensor/TensorPadding.h') diff --git a/unsupported/Eigen/CXX11/src/Tensor/TensorPadding.h b/unsupported/Eigen/CXX11/src/Tensor/TensorPadding.h index 07a6e8d4c..91e32d200 100644 --- a/unsupported/Eigen/CXX11/src/Tensor/TensorPadding.h +++ b/unsupported/Eigen/CXX11/src/Tensor/TensorPadding.h @@ -98,6 +98,11 @@ struct TensorEvaluator, Device EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE TensorEvaluator(const XprType& op, const Device& device) : m_impl(op.expression(), device), m_padding(op.padding()) { + // The padding op doesn't change the rank of the tensor. Directly padding a scalar would lead + // to a vector, which doesn't make sense. Instead one should reshape the scalar into a vector + // of 1 element first and then pad. + EIGEN_STATIC_ASSERT(NumDims > 0, YOU_MADE_A_PROGRAMMING_MISTAKE); + // Compute dimensions m_dimensions = m_impl.dimensions(); for (int i = 0; i < NumDims; ++i) { -- cgit v1.2.3