aboutsummaryrefslogtreecommitdiffhomepage
path: root/Eigen/StdVector
diff options
context:
space:
mode:
authorGravatar Gael Guennebaud <g.gael@free.fr>2009-04-21 11:44:58 +0000
committerGravatar Gael Guennebaud <g.gael@free.fr>2009-04-21 11:44:58 +0000
commit5e5bac52d7c7eac058f47e7e3fc3504267eb0d09 (patch)
tree2b17f25e2be3429db680999521947d212f4d4a76 /Eigen/StdVector
parent4efcc14b912770385c5b698e3f7934406b17117e (diff)
this should fix the linking issue with StdVector without any user
changes... I cross my fingers...
Diffstat (limited to 'Eigen/StdVector')
-rw-r--r--Eigen/StdVector30
1 files changed, 20 insertions, 10 deletions
diff --git a/Eigen/StdVector b/Eigen/StdVector
index 32bbd773f..5ee07d299 100644
--- a/Eigen/StdVector
+++ b/Eigen/StdVector
@@ -67,38 +67,40 @@ struct ei_has_aligned_operator_new {
namespace std {
-#define EIGEN_STD_VECTOR_SPECIALIZATION_BODY \
+#define EIGEN_STD_VECTOR_SPECIALIZATION_BODY(VECTOR) \
public: \
typedef T value_type; \
typedef typename vector_base::allocator_type allocator_type; \
typedef typename vector_base::size_type size_type; \
typedef typename vector_base::iterator iterator; \
- explicit vector(const allocator_type& __a = allocator_type()) : vector_base(__a) {} \
- vector(const vector& c) : vector_base(c) {} \
- vector(size_type num, const value_type& val = value_type()) : vector_base(num, val) {} \
- vector(iterator start, iterator end) : vector_base(start, end) {} \
- vector& operator=(const vector& __x) { \
+ explicit VECTOR(const allocator_type& __a = allocator_type()) : vector_base(__a) {} \
+ VECTOR(const VECTOR& c) : vector_base(c) {} \
+ VECTOR(size_type num, const value_type& val = value_type()) : vector_base(num, val) {} \
+ VECTOR(iterator start, iterator end) : vector_base(start, end) {} \
+ VECTOR& operator=(const VECTOR& __x) { \
vector_base::operator=(__x); \
return *this; \
}
+
+
template<typename T,
typename AllocT = std::allocator<T>,
bool HasAlignedNew = Eigen::ei_has_aligned_operator_new<T>::ret>
-class vector : public std::std_vector<T,AllocT>
+class ei_vector : public std::std_vector<T,AllocT>
{
typedef std_vector<T, AllocT> vector_base;
- EIGEN_STD_VECTOR_SPECIALIZATION_BODY
+ EIGEN_STD_VECTOR_SPECIALIZATION_BODY(ei_vector)
};
template<typename T,typename DummyAlloc>
-class vector<T,DummyAlloc,true>
+class ei_vector<T,DummyAlloc,true>
: public std::std_vector<_EIGEN_WORKAROUND_MSVC_STD_VECTOR(T),
Eigen::aligned_allocator<_EIGEN_WORKAROUND_MSVC_STD_VECTOR(T)> >
{
typedef std_vector<_EIGEN_WORKAROUND_MSVC_STD_VECTOR(T),
Eigen::aligned_allocator<_EIGEN_WORKAROUND_MSVC_STD_VECTOR(T)> > vector_base;
- EIGEN_STD_VECTOR_SPECIALIZATION_BODY
+ EIGEN_STD_VECTOR_SPECIALIZATION_BODY(ei_vector)
void resize(size_type __new_size)
{ resize(__new_size, T()); }
@@ -135,6 +137,14 @@ class vector<T,DummyAlloc,true>
};
+template<typename T,
+ typename AllocT = std::allocator<T> >
+class vector : public ei_vector<T,AllocT>
+{
+ typedef ei_vector<T, AllocT> vector_base;
+ EIGEN_STD_VECTOR_SPECIALIZATION_BODY(vector)
+};
+
}
#endif // EIGEN_STDVECTOR_MODULE_H