we also had to overload the placement new... issue uncovered by Tim when
doing QVector<Vector3d>...
diff --git a/Eigen/src/Core/Matrix.h b/Eigen/src/Core/Matrix.h
index bfff6cc..80897c4 100644
--- a/Eigen/src/Core/Matrix.h
+++ b/Eigen/src/Core/Matrix.h
@@ -141,11 +141,21 @@
       return ei_aligned_malloc<ByteAlignedAsNeeded>(size);
     }
 
+    void *operator new(size_t, Matrix *ptr) throw()
+    {
+      return static_cast<void*>(ptr);
+    }
+
     void *operator new[](size_t size) throw()
     {
       return ei_aligned_malloc<ByteAlignedAsNeeded>(size);
     }
 
+    void *operator new[](size_t, Matrix *ptr) throw()
+    {
+      return static_cast<void*>(ptr);
+    }
+
     void operator delete(void * ptr) { ei_aligned_free(static_cast<ByteAlignedAsNeeded *>(ptr), 0); }
     void operator delete[](void * ptr) { ei_aligned_free(static_cast<ByteAlignedAsNeeded *>(ptr), 0); }