(std::min()
とかで明示してもダメ)
どうやら、min
とmax
が Windows.h
で 関数定義ではなく #define
で定義されているのが諸悪の根源っぽいです・・・。
回避するには以下
sample.cpp
using namespace std;
# undef max
# undef min
// ここで min(), max() を使う
// 念のためここでは、Windows関係の関数を実行しないこと
# ifndef max
# define max(a,b) (((a) > (b)) ? (a) : (b))
# endif
# ifndef min
# define min(a,b) (((a) < (b)) ? (a) : (b))
# endif
ベタですが、Windows.h
によって定義されているmin,max
を一旦定義解除して、やりたい事が終わったら再定義する感じです。