this should fix the linking issue with StdVector without any user
changes... I cross my fingers...
diff --git a/Eigen/StdVector b/Eigen/StdVector
index 32bbd77..5ee07d2 100644
--- a/Eigen/StdVector
+++ b/Eigen/StdVector
@@ -67,38 +67,40 @@
 
 namespace std {
 
-#define EIGEN_STD_VECTOR_SPECIALIZATION_BODY \
+#define EIGEN_STD_VECTOR_SPECIALIZATION_BODY(VECTOR) \
   public:  \
     typedef T value_type; \
     typedef typename vector_base::allocator_type allocator_type; \
     typedef typename vector_base::size_type size_type;  \
     typedef typename vector_base::iterator iterator;  \
-    explicit vector(const allocator_type& __a = allocator_type()) : vector_base(__a) {}  \
-    vector(const vector& c) : vector_base(c) {}  \
-    vector(size_type num, const value_type& val = value_type()) : vector_base(num, val) {} \
-    vector(iterator start, iterator end) : vector_base(start, end) {}  \
-    vector& operator=(const vector& __x) {  \
+    explicit VECTOR(const allocator_type& __a = allocator_type()) : vector_base(__a) {}  \
+    VECTOR(const VECTOR& c) : vector_base(c) {}  \
+    VECTOR(size_type num, const value_type& val = value_type()) : vector_base(num, val) {} \
+    VECTOR(iterator start, iterator end) : vector_base(start, end) {}  \
+    VECTOR& operator=(const VECTOR& __x) {  \
       vector_base::operator=(__x);  \
       return *this;  \
     }
 
+
+
 template<typename T,
          typename AllocT = std::allocator<T>,
          bool HasAlignedNew = Eigen::ei_has_aligned_operator_new<T>::ret>
-class vector : public std::std_vector<T,AllocT>
+class ei_vector : public std::std_vector<T,AllocT>
 {
   typedef std_vector<T, AllocT> vector_base;
-  EIGEN_STD_VECTOR_SPECIALIZATION_BODY
+  EIGEN_STD_VECTOR_SPECIALIZATION_BODY(ei_vector)
 };
 
 template<typename T,typename DummyAlloc>
-class vector<T,DummyAlloc,true>
+class ei_vector<T,DummyAlloc,true>
   : public std::std_vector<_EIGEN_WORKAROUND_MSVC_STD_VECTOR(T),
                            Eigen::aligned_allocator<_EIGEN_WORKAROUND_MSVC_STD_VECTOR(T)> >
 {
   typedef std_vector<_EIGEN_WORKAROUND_MSVC_STD_VECTOR(T),
                      Eigen::aligned_allocator<_EIGEN_WORKAROUND_MSVC_STD_VECTOR(T)> > vector_base;
-  EIGEN_STD_VECTOR_SPECIALIZATION_BODY
+  EIGEN_STD_VECTOR_SPECIALIZATION_BODY(ei_vector)
 
   void resize(size_type __new_size)
   { resize(__new_size, T()); }
@@ -135,6 +137,14 @@
 
 };
 
+template<typename T,
+         typename AllocT = std::allocator<T> >
+class vector : public ei_vector<T,AllocT>
+{
+  typedef ei_vector<T, AllocT> vector_base;
+  EIGEN_STD_VECTOR_SPECIALIZATION_BODY(vector)
+};
+
 }
 
 #endif // EIGEN_STDVECTOR_MODULE_H