it can be included several times.
*/
-#ifdef _MSC_VER
+// VC 7.x isn't as bad as VC6 and doesn't give these warnings
+#if defined(__VISUALC__) && __VISUALC__ <= 1200
+ // MSVC 5 does not have this
+ #if __VISUALC__ > 1100
+ // we have to disable (and reenable in afterstd.h) this one because,
+ // even though it is of level 4, it is not disabled by warning(push, 1)
+ // below for VC7.1!
+
+ // unreachable code
+ #pragma warning(disable:4702)
+
+ #pragma warning(push, 1)
+ #else // VC 5
+ // 'expression' : signed/unsigned mismatch
+ #pragma warning(disable:4018)
+
+ // 'conversion' : conversion from 'type1' to 'type2',
+ // possible loss of data
+ #pragma warning(disable:4244)
+
+ // C++ language change: to explicitly specialize class template
+ // 'identifier' use the following syntax
+ #pragma warning(disable:4663)
+ #endif
+
// these warning have to be disabled and not just temporarily disabled
- // because they will be given at the end of the compilation of the current
- // source -- and there is absolutely nothing we can do about them
+ // because they will be given at the end of the compilation of the
+ // current source and there is absolutely nothing we can do about them
// 'foo': unreferenced inline function has been removed
#pragma warning(disable:4514)
// 'id': identifier was truncated to 'num' characters in the debug info
#pragma warning(disable:4786)
+#endif // VC++ < 7
- #pragma warning(push, 1)
-#endif