diff --git a/Eigen/src/Core/util/ReshapedHelper.h b/Eigen/src/Core/util/ReshapedHelper.h index 6d949eb60..6daea0305 100644 --- a/Eigen/src/Core/util/ReshapedHelper.h +++ b/Eigen/src/Core/util/ReshapedHelper.h @@ -41,10 +41,9 @@ 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 }; -}; +constexpr inline int get_compiletime_reshape_order(int flags, int order) { + return order == AutoOrder ? flags & RowMajorBit : order; +} } diff --git a/Eigen/src/plugins/ReshapedMethods.h b/Eigen/src/plugins/ReshapedMethods.h index 482a6b045..2cb1cf682 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, - internal::get_compiletime_reshape_order::value> + internal::get_compiletime_reshape_order(Flags, Order)> reshaped(NRowsType nRows, NColsType nCols) EIGEN_RESHAPED_METHOD_CONST { return Reshaped::value, internal::get_compiletime_reshape_size::value, - internal::get_compiletime_reshape_order::value> + internal::get_compiletime_reshape_order(Flags, Order)> (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())); @@ -129,12 +129,12 @@ reshaped() EIGEN_RESHAPED_METHOD_CONST template EIGEN_DEVICE_FUNC inline Reshaped::value> + internal::get_compiletime_reshape_order(Flags, Order)> reshaped() EIGEN_RESHAPED_METHOD_CONST { EIGEN_STATIC_ASSERT(Order==RowMajor || Order==ColMajor || Order==AutoOrder, INVALID_TEMPLATE_PARAMETER); return Reshaped::value> + internal::get_compiletime_reshape_order(Flags, Order)> (derived(), size(), 1); }