To fix this it's necessary to add the "long long int" flavor of make_unsigned to Meta.h (such as done in the attached patch). I'll run some more tests (primarily to make sure this doesn't break amd64) in the next few days and do a Team upload, if nobody beats me to it.
diff --git a/Eigen/src/Core/util/Meta.h b/Eigen/src/Core/util/Meta.h index 81ae2a3..dd25676 100755 --- a/Eigen/src/Core/util/Meta.h +++ b/Eigen/src/Core/util/Meta.h @@ -177,12 +177,15 @@ template<> struct is_integral<unsigned __int64> { enum { value = true }; } using std::make_unsigned; #else // TODO: Possibly improve this implementation of make_unsigned. // It is currently used only by // template<typename Scalar> struct random_default_impl<Scalar, false, true>. template<typename> struct make_unsigned; + +template<> struct make_unsigned<long long int> { typedef unsigned long long int type; }; + template<> struct make_unsigned<char> { typedef unsigned char type; }; template<> struct make_unsigned<signed char> { typedef unsigned char type; }; template<> struct make_unsigned<unsigned char> { typedef unsigned char type; }; template<> struct make_unsigned<signed short> { typedef unsigned short type; }; template<> struct make_unsigned<unsigned short> { typedef unsigned short type; }; template<> struct make_unsigned<signed int> { typedef unsigned int type; };