{ \
template<typename _Ay> \
class list<__VA_ARGS__, _Ay> \
: public list<__VA_ARGS__, EIGEN_ALIGNED_ALLOCATOR<__VA_ARGS__> > \
{ \
typedef list<__VA_ARGS__, EIGEN_ALIGNED_ALLOCATOR<__VA_ARGS__> > list_base; \
public: \
typedef __VA_ARGS__ value_type; \
typedef typename list_base::allocator_type allocator_type; \
typedef typename list_base::size_type size_type; \
typedef typename list_base::iterator iterator; \
explicit list(const allocator_type& a = allocator_type()) : list_base(a) {} \
template<typename InputIterator> \
list(InputIterator first, InputIterator last, const allocator_type& a = allocator_type()) : list_base(first, last, a) {} \
list(const list& c) : list_base(c) {} \
explicit list(size_type num, const value_type& val = value_type()) : list_base(num, val) {} \
list(iterator start, iterator end) : list_base(start, end) {} \
list& operator=(const list& x) { \
list_base::operator=(x); \
return *this; \
} \
}; \
}
#define EIGEN_EXPLICIT_STL_LIST_INSTANTIATION(...)
This section contains a convenience MACRO which allows an easy specialization of std::list such that for data types with alignment issues the correct allocator is used automatically.