mirror of
https://gitlab.com/libeigen/eigen.git
synced 2024-12-27 07:29:52 +08:00
bug #829: Introduce macro EIGEN_HAS_CXX11_CONTAINERS and do not specialize std-containers if it is enabled.
This commit is contained in:
parent
a5d1bb2be8
commit
712e2fed17
@ -370,6 +370,15 @@
|
||||
#endif
|
||||
#endif
|
||||
|
||||
// Does the compiler support proper C++11 containers?
|
||||
#ifndef EIGEN_HAS_CXX11_CONTAINERS
|
||||
#if ((__cplusplus >= 201103L) && (EIGEN_COMP_GNUC_STRICT || EIGEN_COMP_CLANG)) || EIGEN_COMP_MSVC >= 1900
|
||||
#define EIGEN_HAS_CXX11_CONTAINERS 1
|
||||
#else
|
||||
#define EIGEN_HAS_CXX11_CONTAINERS 0
|
||||
#endif
|
||||
#endif
|
||||
|
||||
/** Allows to disable some optimizations which might affect the accuracy of the result.
|
||||
* Such optimization are enabled by default, and set EIGEN_FAST_MATH to 0 to disable them.
|
||||
* They currently include:
|
||||
|
@ -53,7 +53,7 @@ namespace std \
|
||||
}
|
||||
|
||||
// check whether we really need the std::deque specialization
|
||||
#if !(defined(_GLIBCXX_DEQUE) && (!EIGEN_GNUC_AT_LEAST(4,1))) /* Note that before gcc-4.1 we already have: std::deque::resize(size_type,const T&). */
|
||||
#if !EIGEN_HAS_CXX11_CONTAINERS && !(defined(_GLIBCXX_DEQUE) && (!EIGEN_GNUC_AT_LEAST(4,1))) /* Note that before gcc-4.1 we already have: std::deque::resize(size_type,const T&). */
|
||||
|
||||
namespace std {
|
||||
|
||||
|
@ -51,8 +51,8 @@ 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&). */
|
||||
// check whether we really need the std::list specialization
|
||||
#if !EIGEN_HAS_CXX11_CONTAINERS && !(defined(_GLIBCXX_LIST) && (!EIGEN_GNUC_AT_LEAST(4,1))) /* Note that before gcc-4.1 we already have: std::list::resize(size_type,const T&). */
|
||||
|
||||
namespace std
|
||||
{
|
||||
|
@ -44,6 +44,9 @@ namespace std \
|
||||
}; \
|
||||
}
|
||||
|
||||
// Don't specialize if containers are implemented according to C++11
|
||||
#if !EIGEN_HAS_CXX11_CONTAINERS
|
||||
|
||||
namespace std {
|
||||
|
||||
#define EIGEN_STD_VECTOR_SPECIALIZATION_BODY \
|
||||
@ -122,5 +125,7 @@ namespace std {
|
||||
#endif
|
||||
};
|
||||
}
|
||||
#endif // !EIGEN_HAS_CXX11_CONTAINERS
|
||||
|
||||
|
||||
#endif // EIGEN_STDVECTOR_H
|
||||
|
Loading…
Reference in New Issue
Block a user