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;
};