26 #ifndef EIGEN_STL_DETAILS_H
27 #define EIGEN_STL_DETAILS_H
29 #ifndef EIGEN_ALIGNED_ALLOCATOR
30 #define EIGEN_ALIGNED_ALLOCATOR Eigen::aligned_allocator
69 #define EIGEN_WORKAROUND_MSVC_STL_SUPPORT(T) \
70 typename Eigen::internal::conditional< \
71 Eigen::internal::is_arithmetic<T>::value, \
73 Eigen::internal::workaround_msvc_stl_support<T> \
77 template<
typename T>
struct workaround_msvc_stl_support :
public T
79 inline workaround_msvc_stl_support() : T() {}
80 inline workaround_msvc_stl_support(
const T& other) : T(other) {}
81 inline operator T& () {
return *
static_cast<T*
>(
this); }
82 inline operator const T& ()
const {
return *
static_cast<const T*
>(
this); }
83 template<
typename OtherT>
84 inline T& operator=(
const OtherT& other)
85 { T::operator=(other);
return *
this; }
86 inline workaround_msvc_stl_support& operator=(
const workaround_msvc_stl_support& other)
87 { T::operator=(other);
return *
this; }
93 #define EIGEN_WORKAROUND_MSVC_STL_SUPPORT(T) T
99 #endif // EIGEN_STL_DETAILS_H