diff options
author | 2010-04-21 12:31:04 -0400 | |
---|---|---|
committer | 2010-04-21 12:31:04 -0400 | |
commit | faf8f7732dffd33eeae8afc8aad165668c8b6b2e (patch) | |
tree | df07ccbb816b850e543e1169def52958ea10397a /Eigen/src | |
parent | e33953b888dbdbff5fdeb74660055db8dc5e26b4 (diff) | |
parent | 2db538748847b230ff33cfa7f77426400b9b4811 (diff) |
merge
Diffstat (limited to 'Eigen/src')
-rw-r--r-- | Eigen/src/StlSupport/StdList.h | 7 | ||||
-rw-r--r-- | Eigen/src/StlSupport/StdVector.h | 18 |
2 files changed, 17 insertions, 8 deletions
diff --git a/Eigen/src/StlSupport/StdList.h b/Eigen/src/StlSupport/StdList.h index 43af4f0f8..55b90066e 100644 --- a/Eigen/src/StlSupport/StdList.h +++ b/Eigen/src/StlSupport/StdList.h @@ -66,6 +66,9 @@ namespace std \ }; \ } +// check whether we really need the std::vector specialization +#if !(defined(_GLIBCXX_VECTOR) && (!EIGEN_GNUC_AT_LEAST(4,1))) /* Note that before gcc-4.1 we already have: std::list::resize(size_type,const T&). */ + namespace std { @@ -91,7 +94,7 @@ namespace std template<typename T> class list<T,Eigen::aligned_allocator<T> > : public list<EIGEN_WORKAROUND_MSVC_STL_SUPPORT(T), - Eigen::aligned_allocator_indirection<EIGEN_WORKAROUND_MSVC_STL_SUPPORT(T)> > + Eigen::aligned_allocator_indirection<EIGEN_WORKAROUND_MSVC_STL_SUPPORT(T)> > { typedef list<EIGEN_WORKAROUND_MSVC_STL_SUPPORT(T), Eigen::aligned_allocator_indirection<EIGEN_WORKAROUND_MSVC_STL_SUPPORT(T)> > list_base; @@ -121,4 +124,6 @@ namespace std }; } +#endif // check whether specialization is actually required + #endif // EIGEN_STDLIST_H diff --git a/Eigen/src/StlSupport/StdVector.h b/Eigen/src/StlSupport/StdVector.h index f3d268c9b..8526d29e0 100644 --- a/Eigen/src/StlSupport/StdVector.h +++ b/Eigen/src/StlSupport/StdVector.h @@ -67,6 +67,9 @@ namespace std \ }; \ } +// check whether we really need the std::vector specialization +#if !(defined(_GLIBCXX_VECTOR) && (!EIGEN_GNUC_AT_LEAST(4,1))) /* Note that before gcc-4.1 we already have: std::vector::resize(size_type,const T&). */ + namespace std { #define EIGEN_STD_VECTOR_SPECIALIZATION_BODY \ @@ -88,10 +91,10 @@ namespace std { return *this; \ } -template<typename T> -class vector<T,Eigen::aligned_allocator<T> > - : public vector<EIGEN_WORKAROUND_MSVC_STL_SUPPORT(T), - Eigen::aligned_allocator_indirection<EIGEN_WORKAROUND_MSVC_STL_SUPPORT(T)> > + template<typename T> + class vector<T,Eigen::aligned_allocator<T> > + : public vector<EIGEN_WORKAROUND_MSVC_STL_SUPPORT(T), + Eigen::aligned_allocator_indirection<EIGEN_WORKAROUND_MSVC_STL_SUPPORT(T)> > { typedef vector<EIGEN_WORKAROUND_MSVC_STL_SUPPORT(T), Eigen::aligned_allocator_indirection<EIGEN_WORKAROUND_MSVC_STL_SUPPORT(T)> > vector_base; @@ -101,6 +104,7 @@ class vector<T,Eigen::aligned_allocator<T> > { resize(new_size, T()); } #if defined(_VECTOR_) + #pragma message("old method") // workaround MSVC std::vector implementation void resize(size_type new_size, const value_type& x) { @@ -136,9 +140,9 @@ class vector<T,Eigen::aligned_allocator<T> > vector_base::insert(vector_base::end(), new_size - vector_base::size(), x); } #endif - -}; - + }; } +#endif // check whether specialization is actually required + #endif // EIGEN_STDVECTOR_H |