mirror of
https://gitlab.com/libeigen/eigen.git
synced 2024-12-27 07:29:52 +08:00
Added missing STL include of <list> in main.h
Removed duplicated include of <sstream>
Added comments on the background of min/max macro definitions and STL header includes
(grafted from e49e84d979
)
This commit is contained in:
parent
7443d8b4e9
commit
05fb735d1d
25
test/main.h
25
test/main.h
@ -17,13 +17,36 @@
|
|||||||
#include <sstream>
|
#include <sstream>
|
||||||
#include <vector>
|
#include <vector>
|
||||||
#include <typeinfo>
|
#include <typeinfo>
|
||||||
|
|
||||||
|
// The following includes of STL headers have to be done _before_ the
|
||||||
|
// definition of macros min() and max(). The reason is that many STL
|
||||||
|
// implementations will not work properly as the min and max symbols collide
|
||||||
|
// with the STL functions std:min() and std::max(). The STL headers may check
|
||||||
|
// for the macro definition of min/max and issue a warning or undefine the
|
||||||
|
// macros.
|
||||||
|
//
|
||||||
|
// Still, Windows defines min() and max() in windef.h as part of the regular
|
||||||
|
// Windows system interfaces and many other Windows APIs depend on these
|
||||||
|
// macros being available. To prevent the macro expansion of min/max and to
|
||||||
|
// make Eigen compatible with the Windows environment all function calls of
|
||||||
|
// std::min() and std::max() have to be written with parenthesis around the
|
||||||
|
// function name.
|
||||||
|
//
|
||||||
|
// All STL headers used by Eigen should be included here. Because main.h is
|
||||||
|
// included before any Eigen header and because the STL headers are guarded
|
||||||
|
// against multiple inclusions, no STL header will see our own min/max macro
|
||||||
|
// definitions.
|
||||||
#include <limits>
|
#include <limits>
|
||||||
#include <algorithm>
|
#include <algorithm>
|
||||||
#include <sstream>
|
|
||||||
#include <complex>
|
#include <complex>
|
||||||
#include <deque>
|
#include <deque>
|
||||||
#include <queue>
|
#include <queue>
|
||||||
|
#include <list>
|
||||||
|
|
||||||
|
// To test that all calls from Eigen code to std::min() and std::max() are
|
||||||
|
// protected by parenthesis against macro expansion, the min()/max() macros
|
||||||
|
// are defined here and any not-parenthesized min/max call will cause a
|
||||||
|
// compiler error.
|
||||||
#define min(A,B) please_protect_your_min_with_parentheses
|
#define min(A,B) please_protect_your_min_with_parentheses
|
||||||
#define max(A,B) please_protect_your_max_with_parentheses
|
#define max(A,B) please_protect_your_max_with_parentheses
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user