From a382bc9364b5d5a049678f8cc138670ca1c7a4fa Mon Sep 17 00:00:00 2001 From: Gael Guennebaud Date: Fri, 18 May 2018 17:02:27 +0200 Subject: [PATCH] is_convertible does not seems to work well with MSVC 2013, so let's rather use __is_enum(T) for old MSVC versions --- Eigen/src/Core/util/XprHelper.h | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/Eigen/src/Core/util/XprHelper.h b/Eigen/src/Core/util/XprHelper.h index 1217404d6..9ffb0474b 100644 --- a/Eigen/src/Core/util/XprHelper.h +++ b/Eigen/src/Core/util/XprHelper.h @@ -39,10 +39,12 @@ template struct is_valid_index_type { enum { value = #if EIGEN_HAS_TYPE_TRAITS - internal::is_integral::value || std::is_enum::value + internal::is_integral::value || std::is_enum::value +#else if EIGEN_COMP_MSVC >= 1500 + internal::is_integral::value || __is_enum(T) #else - // without C++11, we use is_convertible to Index instead of is_integral in order to treat enums as Index. - internal::is_convertible::value + // without C++11, we use is_convertible to Index instead of is_integral in order to treat enums as Index. + internal::is_convertible::value #endif }; };