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

Reply via email to