diff --git a/Eigen/StdVector b/Eigen/StdVector index 1cc7984e7..c39601c53 100644 --- a/Eigen/StdVector +++ b/Eigen/StdVector @@ -112,10 +112,8 @@ class vector else if (__new_size < vector_base::size()) vector_base::erase(vector_base::begin() + __new_size, vector_base::end()); } - #elif defined(_GLIBCXX_VECTOR) && EIGEN_GNUC_AT_LEAST(4,1) + #elif defined(_GLIBCXX_VECTOR) && EIGEN_GNUC_AT_LEAST(4,2) // workaround GCC std::vector implementation - // Note that before gcc-4.1 we already have: std::vector::resize(size_type,const T&), - // no no need to workaround ! void resize(size_type __new_size, const value_type& __x) { if (__new_size < vector_base::size()) @@ -123,7 +121,17 @@ class vector else vector_base::insert(vector_base::end(), __new_size - vector_base::size(), __x); } + #elif defined(_GLIBCXX_VECTOR) && EIGEN_GNUC_AT_LEAST(4,1) + void resize(size_type __new_size, const value_type& __x) + { + if (__new_size < vector_base::size()) + erase(vector_base::begin() + __new_size, vector_base::end()); + else + insert(vector_base::end(), __new_size - vector_base::size(), __x); + } #else + // Before gcc-4.1 we already have: std::vector::resize(size_type,const T&), + // so no need for a workaround ! using vector_base::resize; #endif };