diff -aNur unpatched/Eigen/src/Core/ProductBase.h patched/Eigen/src/Core/ProductBase.h
--- unpatched/Eigen/src/Core/ProductBase.h	2015-01-21 08:26:41.000000000 -0800
+++ patched/Eigen/src/Core/ProductBase.h	2016-10-26 17:11:53.638624059 -0700
@@ -139,15 +139,15 @@
     { return FullyLazyCoeffBaseProductType(m_lhs, m_rhs).diagonal(index); }
 
     // restrict coeff accessors to 1x1 expressions. No need to care about mutators here since this isnt a Lvalue expression
-    typename Base::CoeffReturnType coeff(Index row, Index col) const
+    typename Base::CoeffReturnType coeff(Index aRow, Index aCol) const
     {
 #ifdef EIGEN2_SUPPORT
-      return lhs().row(row).cwiseProduct(rhs().col(col).transpose()).sum();
+      return lhs().row(aRow).cwiseProduct(rhs().col(col).transpose()).sum();
 #else
       EIGEN_STATIC_ASSERT_SIZE_1x1(Derived)
       eigen_assert(this->rows() == 1 && this->cols() == 1);
       Matrix<Scalar,1,1> result = *this;
-      return result.coeff(row,col);
+      return result.coeff(aRow,aCol);
 #endif
     }
 
