Microsoft Windowsプラットフォームのヘッダファイル windows.h は悪名高いmin, maxマクロを定義するため、プリプロセス時に意図せずminやmaxが置換されてしまい、妙なコンパイルエラーを引き起こす場合がある。一例としてMSVC10で下記コードをコンパイルすると、それぞれエラーメッセージが出力される。 #include <windows.h> #include <numeric> //-------- Case 1 int a = 1, b = 2; int x = std::min(a, b); // error C2589: '(' : スコープ解決演算子 (::) の右側にあるトークンは使えません。 // error C2059: 構文エラー : '::' //-------- Case 2 double maxvalue = std::numeric_l