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