diff --git a/Eigen/src/Core/util/ReshapedHelper.h b/Eigen/src/Core/util/ReshapedHelper.h index 97370c138..b6733b6bc 100644 --- a/Eigen/src/Core/util/ReshapedHelper.h +++ b/Eigen/src/Core/util/ReshapedHelper.h @@ -39,6 +39,12 @@ inline Index get_runtime_reshape_size(AutoSize_t /*size*/, Index other, Index to return total/other; } +template +struct get_compiletime_reshape_order +{ + enum { value = Order==AutoOrder ? Flags & RowMajorBit : Order }; +}; + } } // end namespace Eigen diff --git a/Eigen/src/plugins/ReshapedMethods.h b/Eigen/src/plugins/ReshapedMethods.h index 6885685d5..482a6b045 100644 --- a/Eigen/src/plugins/ReshapedMethods.h +++ b/Eigen/src/plugins/ReshapedMethods.h @@ -105,13 +105,13 @@ EIGEN_DEVICE_FUNC inline Reshaped::value, internal::get_compiletime_reshape_size::value, - (Order==AutoOrder?Flags&RowMajorBit:Order)> + internal::get_compiletime_reshape_order::value> reshaped(NRowsType nRows, NColsType nCols) EIGEN_RESHAPED_METHOD_CONST { return Reshaped::value, internal::get_compiletime_reshape_size::value, - (Order==AutoOrder?Flags&RowMajorBit:Order)> + internal::get_compiletime_reshape_order::value> (derived(), internal::get_runtime_reshape_size(nRows,internal::get_runtime_value(nCols),size()), internal::get_runtime_reshape_size(nCols,internal::get_runtime_value(nRows),size())); @@ -128,11 +128,13 @@ reshaped() EIGEN_RESHAPED_METHOD_CONST template EIGEN_DEVICE_FUNC -inline Reshaped +inline Reshaped::value> reshaped() EIGEN_RESHAPED_METHOD_CONST { EIGEN_STATIC_ASSERT(Order==RowMajor || Order==ColMajor || Order==AutoOrder, INVALID_TEMPLATE_PARAMETER); - return Reshaped + return Reshaped::value> (derived(), size(), 1); }