diff --git a/paddle/framework/eigen.h b/paddle/framework/eigen.h
index 4ba4fd4d11..2599b29508 100644
--- a/paddle/framework/eigen.h
+++ b/paddle/framework/eigen.h
@@ -65,14 +65,15 @@ template <typename T, int MajorType = Eigen::RowMajor,
           typename IndexType = Eigen::DenseIndex>
 struct EigenVector : public EigenTensor<T, 1, MajorType, IndexType> {
   // Flatten is to reshape a Tensor into a one dimension EigenVector
-  static typename EigenTensor<T, 1>::Type Flatten(Tensor& tensor) {
-    return EigenTensor<T, 1>::From(
-        tensor, make_ddim({static_cast<int>(product(tensor.dims_))}));
+  using Parent = EigenTensor<T, 1, MajorType, IndexType>;
+  static typename Parent::Type Flatten(Tensor& tensor) {
+    return Parent::From(tensor,
+                        make_ddim({static_cast<int>(product(tensor.dims_))}));
   }
 
-  static typename EigenTensor<T, 1>::ConstType Flatten(const Tensor& tensor) {
-    return EigenTensor<T, 1>::From(
-        tensor, make_ddim({static_cast<int>(product(tensor.dims_))}));
+  static typename Parent::ConstType Flatten(const Tensor& tensor) {
+    return Parent::From(tensor,
+                        make_ddim({static_cast<int>(product(tensor.dims_))}));
   }
 };