* move cwise *= and /= to Core (like * and /)
* tidy the StdVector module
* fix warnings (especially a | instead of ||) in stdvector test
diff --git a/Eigen/StdVector b/Eigen/StdVector
index 19be257..e8b5354 100644
--- a/Eigen/StdVector
+++ b/Eigen/StdVector
@@ -1,28 +1,3 @@
-// This file is part of Eigen, a lightweight C++ template library
-// for linear algebra. Eigen itself is part of the KDE project.
-//
-// Copyright (C) 2009 Benoit Jacob <jacob.benoit.1@gmail.com>
-// Copyright (C) 2009 Alex Stapleton <alex.stapleton@gmail.com>
-//
-// Eigen is free software; you can redistribute it and/or
-// modify it under the terms of the GNU Lesser General Public
-// License as published by the Free Software Foundation; either
-// version 3 of the License, or (at your option) any later version.
-//
-// Alternatively, you can redistribute it and/or
-// modify it under the terms of the GNU General Public License as
-// published by the Free Software Foundation; either version 2 of
-// the License, or (at your option) any later version.
-//
-// Eigen is distributed in the hope that it will be useful, but WITHOUT ANY
-// WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
-// FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License or the
-// GNU General Public License for more details.
-//
-// You should have received a copy of the GNU Lesser General Public
-// License and a copy of the GNU General Public License along with
-// Eigen. If not, see <http://www.gnu.org/licenses/>.
-
 #ifndef EIGEN_STDVECTOR_MODULE_H
 #define EIGEN_STDVECTOR_MODULE_H
 
@@ -30,47 +5,11 @@
 #include <vector>
 
 namespace Eigen {
-template<typename aligned_type> class ei_unaligned_type;
-
-template<typename _Scalar, int _Rows, int _Cols, int _Options, int _MaxRows, int _MaxCols>
-class ei_unaligned_type<Matrix<_Scalar,_Rows,_Cols,_Options,_MaxRows,_MaxCols> >
-  : public Matrix<_Scalar,_Rows,_Cols,_Options,_MaxRows,_MaxCols>
-{
-  public:
-    typedef Matrix<_Scalar,_Rows,_Cols,_Options,_MaxRows,_MaxCols> aligned_base;
-    ei_unaligned_type() : aligned_base(ei_constructor_without_unaligned_array_assert()) {}
-    ei_unaligned_type(const aligned_base& other)
-    {
-      resize(other.rows(), other.cols());
-      ei_assign_impl<ei_unaligned_type,aligned_base,NoVectorization>::run(*this, other);
-    }
-};
+#include "src/StdVector/UnalignedType.h"
 } // namespace Eigen
 
 namespace std {
-
-  template <typename _Scalar, int _Rows, int _Cols, int _Options, int _MaxRows, int _MaxCols, typename _Alloc>
-  class vector<Eigen::Matrix<_Scalar,_Rows,_Cols,_Options,_MaxRows,_MaxCols>, _Alloc>
-    : public vector<Eigen::ei_unaligned_type<Eigen::Matrix<_Scalar,_Rows,_Cols,_Options,_MaxRows,_MaxCols> >,
-                    Eigen::aligned_allocator<Eigen::ei_unaligned_type<Eigen::Matrix<_Scalar,_Rows,_Cols,_Options,_MaxRows,_MaxCols> > > >
-  {
-  public:
-    typedef Eigen::ei_unaligned_type<Eigen::Matrix<_Scalar,_Rows,_Cols,_Options,_MaxRows,_MaxCols> > value_type;
-    typedef Eigen::aligned_allocator<value_type> allocator_type;
-    typedef vector<value_type, allocator_type > unaligned_base;
-    typedef typename unaligned_base::size_type size_type;
-    typedef typename unaligned_base::iterator iterator;
-
-    explicit vector(const allocator_type& __a = allocator_type()) : unaligned_base(__a) {}
-    vector(const vector& c) : unaligned_base(c) {}
-    vector(size_type num, const value_type& val = value_type()) : unaligned_base(num, val) {}
-    vector(iterator start, iterator end) : unaligned_base(start, end) {}
-    vector& operator=(const vector& __x) {
-      unaligned_base::operator=(__x);
-      return *this;
-    }
-  };
-
+#include "src/StdVector/StdVector.h"
 } // namespace std
 
 #endif // EIGEN_STDVECTOR_MODULE_H
diff --git a/Eigen/src/Array/CwiseOperators.h b/Eigen/src/Array/CwiseOperators.h
index 81e51f8..4b6346d 100644
--- a/Eigen/src/Array/CwiseOperators.h
+++ b/Eigen/src/Array/CwiseOperators.h
@@ -418,43 +418,6 @@
   return m_matrix.const_cast_derived() = *this + scalar;
 }
 
-
-//=============
-
-/** \array_module
-  *
-  * Replaces this expression by its coefficient-wise product with \a other.
-  *
-  * Example: \include Cwise_times_equal.cpp
-  * Output: \verbinclude Cwise_times_equal.out
-  *
-  * \sa operator*(), operator/=()
-  */
-template<typename ExpressionType>
-template<typename OtherDerived>
-inline ExpressionType& Cwise<ExpressionType>::operator*=(const MatrixBase<OtherDerived> &other)
-{
-  return m_matrix.const_cast_derived() = *this * other;
-}
-
-/** \array_module
-  *
-  * Replaces this expression by its coefficient-wise quotient with \a other.
-  *
-  * Example: \include Cwise_slash_equal.cpp
-  * Output: \verbinclude Cwise_slash_equal.out
-  *
-  * \sa operator/(), operator*=()
-  */
-template<typename ExpressionType>
-template<typename OtherDerived>
-inline ExpressionType& Cwise<ExpressionType>::operator/=(const MatrixBase<OtherDerived> &other)
-{
-  return m_matrix.const_cast_derived() = *this / other;
-}
-
-//=============
-
 /** \array_module
   *
   * \returns an expression of \c *this with each coeff decremented by the constant \a scalar
diff --git a/Eigen/src/Core/CwiseBinaryOp.h b/Eigen/src/Core/CwiseBinaryOp.h
index 87d7123..c5bead9 100644
--- a/Eigen/src/Core/CwiseBinaryOp.h
+++ b/Eigen/src/Core/CwiseBinaryOp.h
@@ -224,6 +224,34 @@
   return EIGEN_CWISE_BINOP_RETURN_TYPE(ei_scalar_quotient_op)(_expression(), other.derived());
 }
 
+/** Replaces this expression by its coefficient-wise product with \a other.
+  *
+  * Example: \include Cwise_times_equal.cpp
+  * Output: \verbinclude Cwise_times_equal.out
+  *
+  * \sa operator*(), operator/=()
+  */
+template<typename ExpressionType>
+template<typename OtherDerived>
+inline ExpressionType& Cwise<ExpressionType>::operator*=(const MatrixBase<OtherDerived> &other)
+{
+  return m_matrix.const_cast_derived() = *this * other;
+}
+
+/** Replaces this expression by its coefficient-wise quotient by \a other.
+  *
+  * Example: \include Cwise_slash_equal.cpp
+  * Output: \verbinclude Cwise_slash_equal.out
+  *
+  * \sa operator/(), operator*=()
+  */
+template<typename ExpressionType>
+template<typename OtherDerived>
+inline ExpressionType& Cwise<ExpressionType>::operator/=(const MatrixBase<OtherDerived> &other)
+{
+  return m_matrix.const_cast_derived() = *this / other;
+}
+
 /** \returns an expression of the coefficient-wise min of *this and \a other
   *
   * Example: \include Cwise_min.cpp
diff --git a/Eigen/src/StdVector/StdVector.h b/Eigen/src/StdVector/StdVector.h
new file mode 100644
index 0000000..432582c
--- /dev/null
+++ b/Eigen/src/StdVector/StdVector.h
@@ -0,0 +1,51 @@
+// This file is part of Eigen, a lightweight C++ template library
+// for linear algebra. Eigen itself is part of the KDE project.
+//
+// Copyright (C) 2009 Benoit Jacob <jacob.benoit.1@gmail.com>
+// Copyright (C) 2009 Alex Stapleton <alex.stapleton@gmail.com>
+//
+// Eigen is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 3 of the License, or (at your option) any later version.
+//
+// Alternatively, you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of
+// the License, or (at your option) any later version.
+//
+// Eigen is distributed in the hope that it will be useful, but WITHOUT ANY
+// WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+// FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License or the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License and a copy of the GNU General Public License along with
+// Eigen. If not, see <http://www.gnu.org/licenses/>.
+
+#ifndef EIGEN_STDVECTOR_H
+#define EIGEN_STDVECTOR_H
+
+template <typename _Scalar, int _Rows, int _Cols, int _Options, int _MaxRows, int _MaxCols, typename _Alloc>
+class vector<Eigen::Matrix<_Scalar,_Rows,_Cols,_Options,_MaxRows,_MaxCols>, _Alloc>
+  : public vector<Eigen::ei_unaligned_type<Eigen::Matrix<_Scalar,_Rows,_Cols,_Options,_MaxRows,_MaxCols> >,
+                  Eigen::aligned_allocator<Eigen::ei_unaligned_type<Eigen::Matrix<_Scalar,_Rows,_Cols,_Options,_MaxRows,_MaxCols> > > >
+{
+public:
+  typedef Eigen::ei_unaligned_type<Eigen::Matrix<_Scalar,_Rows,_Cols,_Options,_MaxRows,_MaxCols> > value_type;
+  typedef Eigen::aligned_allocator<value_type> allocator_type;
+  typedef vector<value_type, allocator_type > unaligned_base;
+  typedef typename unaligned_base::size_type size_type;
+  typedef typename unaligned_base::iterator iterator;
+
+  explicit vector(const allocator_type& __a = allocator_type()) : unaligned_base(__a) {}
+  vector(const vector& c) : unaligned_base(c) {}
+  vector(size_type num, const value_type& val = value_type()) : unaligned_base(num, val) {}
+  vector(iterator start, iterator end) : unaligned_base(start, end) {}
+  vector& operator=(const vector& __x) {
+    unaligned_base::operator=(__x);
+    return *this;
+  }
+};
+
+#endif // EIGEN_STDVECTOR_H
diff --git a/Eigen/src/StdVector/UnalignedType.h b/Eigen/src/StdVector/UnalignedType.h
new file mode 100644
index 0000000..6ceeddd
--- /dev/null
+++ b/Eigen/src/StdVector/UnalignedType.h
@@ -0,0 +1,45 @@
+// This file is part of Eigen, a lightweight C++ template library
+// for linear algebra. Eigen itself is part of the KDE project.
+//
+// Copyright (C) 2009 Benoit Jacob <jacob.benoit.1@gmail.com>
+// Copyright (C) 2009 Alex Stapleton <alex.stapleton@gmail.com>
+//
+// Eigen is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 3 of the License, or (at your option) any later version.
+//
+// Alternatively, you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of
+// the License, or (at your option) any later version.
+//
+// Eigen is distributed in the hope that it will be useful, but WITHOUT ANY
+// WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+// FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License or the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License and a copy of the GNU General Public License along with
+// Eigen. If not, see <http://www.gnu.org/licenses/>.
+
+#ifndef EIGEN_UNALIGNEDTYPE_H
+#define EIGEN_UNALIGNEDTYPE_H
+
+template<typename aligned_type> class ei_unaligned_type;
+
+template<typename _Scalar, int _Rows, int _Cols, int _Options, int _MaxRows, int _MaxCols>
+class ei_unaligned_type<Matrix<_Scalar,_Rows,_Cols,_Options,_MaxRows,_MaxCols> >
+  : public Matrix<_Scalar,_Rows,_Cols,_Options,_MaxRows,_MaxCols>
+{
+  public:
+    typedef Matrix<_Scalar,_Rows,_Cols,_Options,_MaxRows,_MaxCols> aligned_base;
+    ei_unaligned_type() : aligned_base(ei_constructor_without_unaligned_array_assert()) {}
+    ei_unaligned_type(const aligned_base& other)
+    {
+      resize(other.rows(), other.cols());
+      ei_assign_impl<ei_unaligned_type,aligned_base,NoVectorization>::run(*this, other);
+    }
+};
+
+#endif // EIGEN_UNALIGNEDTYPE_H
diff --git a/test/stdvector.cpp b/test/stdvector.cpp
index ea57c07..024f972 100644
--- a/test/stdvector.cpp
+++ b/test/stdvector.cpp
@@ -53,9 +53,9 @@
   // do a lot of push_back such that the vector gets internally resized
   // (with memory reallocation)
   MatrixType* ref = &w[0];
-  for(int i=0; i<30 | ((ref==&w[0]) && i<300); ++i)
+  for(int i=0; i<30 || ((ref==&w[0]) && i<300); ++i)
     v.push_back(w[i%w.size()]);
-  for(int i=23; i<v.size(); ++i)
+  for(unsigned int i=23; i<v.size(); ++i)
   {
     VERIFY(v[i]==w[(i-23)%w.size()]);
   }