]> git.saurik.com Git - wxWidgets.git/blobdiff - include/wx/meta/if.h
Removed dummy wxFont == operator implementation (IIRC was needed to compile with...
[wxWidgets.git] / include / wx / meta / if.h
index 64532e6e5df61adc920963d5e7d352a20818aae0..82e6d3b13587f63e10efa5e4333fa926abf1167e 100644 (file)
@@ -11,6 +11,8 @@
 #ifndef _WX_META_IF_H_
 #define _WX_META_IF_H_
 
 #ifndef _WX_META_IF_H_
 #define _WX_META_IF_H_
 
+#include "wx/defs.h"
+
 // NB: This code is intentionally written without partial templates
 //     specialization, because some older compilers (notably VC6) don't
 //     support it.
 // NB: This code is intentionally written without partial templates
 //     specialization, because some older compilers (notably VC6) don't
 //     support it.
 namespace wxPrivate
 {
 
 namespace wxPrivate
 {
 
-template<bool Cond> struct wxIfImpl {};
+template <bool Cond>
+struct wxIfImpl
+
+// broken VC6 needs not just an incomplete template class declaration but a
+// "skeleton" declaration of the specialized versions below as it apparently
+// tries to look up the types in the generic template definition at some moment
+// even though it ends up by using the correct specialization in the end -- but
+// without this skeleton it doesn't recognize Result as a class at all below
+#if defined(__VISUALC__) && !wxCHECK_VISUALC_VERSION(7)
+{
+    template<typename TTrue, typename TFalse> struct Result {};
+}
+#endif // VC++ <= 6
+;
 
 // specialization for true:
 
 // specialization for true:
-template<>
+template <>
 struct wxIfImpl<true>
 {
     template<typename TTrue, typename TFalse> struct Result
 struct wxIfImpl<true>
 {
     template<typename TTrue, typename TFalse> struct Result
@@ -51,7 +66,7 @@ template<bool Cond, typename TTrue, typename TFalse>
 struct wxIf
 {
     typedef typename wxPrivate::wxIfImpl<Cond>
 struct wxIf
 {
     typedef typename wxPrivate::wxIfImpl<Cond>
-                         ::template Result<TTrue,TFalse>::value
+                     ::template Result<TTrue, TFalse>::value
             value;
 };
 
             value;
 };