#ifdef _MSC_VER\r
// Microsoft Visual Studio\r
// shut up the following irritating warnings\r
-// 4275 - VC6, exported class was derived from a class that was not exported\r
// 4786 - VC6, identifier string exceeded maximum allowable length and was truncated (only affects debugger)\r
// 4305 - VC6, identifier type was converted to a smaller type\r
// 4503 - VC6, decorated name was longer than the maximum the compiler allows (only affects debugger)\r
// 4355 - VC6, 'this' : used in base member initializer list\r
// 4675 - VC7.1, "change" in function overload resolution _might_ have altered program\r
// 4996 - VC8, 'xxxx' was declared deprecated\r
-#pragma warning(disable: 4275 4786 4305 4503 4309 4290 4800 4355 4675 4996)\r
+#pragma warning(disable: 4786 4305 4503 4309 4290 4800 4355 4675 4996)\r
#endif\r
\r
#ifdef __BORLANDC__\r
// Borland\r
// Shut up the following irritating warnings\r
-// 8008 - Condition is always true.\r
-// Whenever the compiler encounters a constant comparison that (due to\r
-// the nature of the value being compared) is always true or false, it\r
-// issues this warning and evaluates the condition at compile time.\r
// 8026 - Functions with exception specifications are not expanded inline\r
// 8027 - Functions with xxx are not expanded inline\r
-// 8060 - Possibly incorrect assignment.\r
-// This warning is generated when the compiler encounters an assignment\r
-// operator as the main operator of a conditional expression (part of\r
-// an if, while, or do-while statement). This is usually a\r
-// typographical error for the equality operator.\r
-// 8066 - Unreachable code.\r
-// A break, continue, goto, or return statement was not followed by a\r
-// label or the end of a loop or function. The compiler checks while,\r
-// do, and for loops with a constant test condition, and attempts to\r
-// recognize loops that can't fall through.\r
-#pragma warn -8008\r
#pragma warn -8026\r
#pragma warn -8027\r
-#pragma warn -8060\r
-#pragma warn -8066\r
#endif\r
\r
////////////////////////////////////////////////////////////////////////////////\r
// - version 7 (.NET) (compiler v.13) requires a typename in a parameter specification but supports all\r
// - version 8 (2005) (compiler v.14) requires parameters and templates, supports all\r
#ifdef _MSC_VER\r
-#if _MSC_VER < 1300\r
+#if _MSC_VER <= 1200\r
#undef TYPENAME\r
#define TYPENAME\r
#endif\r
#endif\r
#endif\r
\r
+////////////////////////////////////////////////////////////////////////////////\r
+// Member templates\r
+// e.g. a template function in a template class\r
+\r
+// Not all compilers support them - this fix can be used to disable member\r
+// templates for compilers that don't. Unfortunately that means that some\r
+// functionality will be missing for those compilers.\r
+\r
+#define STLPLUS_MEMBER_TEMPLATES\r
+\r
+// Visual Studio v6 (compiler version 12) does not support them\r
+#ifdef _MSC_VER\r
+#if _MSC_VER <= 1200\r
+#undef STLPLUS_MEMBER_TEMPLATES\r
+#endif\r
+#endif\r
+\r
////////////////////////////////////////////////////////////////////////////////\r
#endif\r