is_convertible<T,Index> does not seems to work well with MSVC 2013, so let's rather use __is_enum(T) for old MSVC versions

This commit is contained in:
Gael Guennebaud 2018-05-18 17:02:27 +02:00
parent 4dd767f455
commit a382bc9364

View File

@ -39,10 +39,12 @@ template<typename T> struct is_valid_index_type
{
enum { value =
#if EIGEN_HAS_TYPE_TRAITS
internal::is_integral<T>::value || std::is_enum<T>::value
internal::is_integral<T>::value || std::is_enum<T>::value
#else if EIGEN_COMP_MSVC >= 1500
internal::is_integral<T>::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<T,Index>::value
// without C++11, we use is_convertible to Index instead of is_integral in order to treat enums as Index.
internal::is_convertible<T,Index>::value
#endif
};
};